将方法作为扩展方法调用比直接调用它需要更多的引用

时间:2011-12-07 17:45:47

标签: c# .net extension-methods reference

我有一个扩展方法,我称之为 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

我很困惑。我认为扩展方法语法只是语法糖,但实际上并没有改变编译方式。

我不想添加它建议的引用,所以我不会将调用作为扩展方法。但我想了解不同之处。

为什么调用方法直接构建正常但是将其作为扩展方法调用无法构建?

1 个答案:

答案 0 :(得分:1)

CallerAssembly是否有可能以.NET Framework客户端配置文件为目标而HelperAssembly以“完整”.NET Framework为目标?

当我这样做时,我遇到了扩展方法(以及其他问题)的问题。