我有一个扩展方法,我称之为 HelperAssembly ,看起来与此类似:
public static class HelperClass
{
public static void MyHelperMethod(this SomeClass some, OtherClass other)
{
// This object is defined in OtherAssembly1
ObjectFromOtherAssembly1 object1 = new ObjectFromOtherAssembly1(some);
// This object is defined in OtherAssembly2
ObjectFromOtherAssembly2 object2 = new ObjectFromOtherAssembly2(other);
DoStuffWith(object1, object2);
}
}
我有一个程序集,我将其称为 CallerAssembly ,它引用了 HelperAssembly 。
我的 HelperAssembly 引用了 OtherAssembly1 和 OtherAssembly2 。
SomeClass和OtherClass都在 ReferenceAssembly 中定义。 HelperAssembly 和 CallerAssembly 引用了 ReferenceAssembly 。
当我从 CallerAssembly 调用我的方法时,一切都很棒:
HelperClass.MyHelperMethod(some, other);
但是,当我这样称呼它(作为扩展方法)时,我会遇到构建错误:
some.MyHelperMethod(other);
错误表示 CallerAssembly 需要引用 OtherAssembly1 和 OtherAssembly2 。
我很困惑。我认为扩展方法语法只是语法糖,但实际上并没有改变编译方式。
我不想添加它建议的引用,所以我不会将调用作为扩展方法。但我想了解不同之处。
为什么调用方法直接构建正常但是将其作为扩展方法调用无法构建?
答案 0 :(得分:1)
CallerAssembly是否有可能以.NET Framework客户端配置文件为目标而HelperAssembly以“完整”.NET Framework为目标?
当我这样做时,我遇到了扩展方法(以及其他问题)的问题。