This kinda sucks.
Normally if you use a type from another assembly, and that type has as part of its interface another type in another assembly, you have to reference both assembly. Fine. But only if you use it.
eg: if you reference assembly 'Animal' and use a class 'Cow' that has a property 'Color', and the type of Color is defined somewhere else (System.Windows.Forms) you have to reference that too. But if you get the cow via the IBovine interface, and that doesn't expose Color, you don't need the reference (at least not statically).
If, however, in the same namespace, there's an extension method that you're not using, and that extension method has some type constraints, you have to reference all the assemblies for all the type constraint parameters.
For example, if you put this in one assembly, in a namespace you merely import:
public static class NotUsed{
public static void DefinatelyNotUsed(this TContext context, Action thing)
where TContext : DataContext
{
}
}
... then you'll also have to pull in System.Data.Linq to get the 'importing' assembly to compile.Doesn't this strike you as odd? I'm sure I can hear a gestalt Eric Lippert in my head explaining why, but I was certainly surprised.
No comments:
Post a Comment