作为扩展方法调用方法需要比直接调用它更多的引用
本文关键字:调用 方法 引用 扩展 | 更新日期: 2023-09-27 18:17:00
我有一个扩展方法,我将命名为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。
我很困惑。我认为扩展方法语法只是语法糖,但实际上并没有改变编译的方式。
我不想添加它所建议的引用,所以我不会将调用作为扩展方法。但我想知道区别是什么。
为什么调用方法直接构建良好,但调用它作为一个扩展方法失败构建?
CallerAssembly针对。net框架客户端配置文件和HelperAssembly针对"完整" .NET框架的任何机会?
当我这样做的时候,我遇到了扩展方法(和其他东西)的问题。