Vac*_*ano 7 .net c# 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个程序集,我将调用CallerAssembly,它引用了HelperAssembly.
我的HelperAssembly引用了OtherAssembly1和OtherAssembly2.
SomeClass和OtherClass都在ReferenceAssembly中定义. HelperAssembly和CallerAssembly引用了ReferenceAssembly.
当我从CallerAssembly调用我的方法时,一切都很棒:
HelperClass.MyHelperMethod(some, other);
Run Code Online (Sandbox Code Playgroud)
但是,当我像这样调用它时(作为扩展方法),我会遇到构建错误:
some.MyHelperMethod(other);
Run Code Online (Sandbox Code Playgroud)
错误表明CallerAssembly需要引用OtherAssembly1和OtherAssembly2.
我很迷惑.我认为扩展方法语法只是语法糖,但实际上并没有改变编译方式.
我不想添加它建议的引用,所以我不会将调用作为扩展方法.但我想了解不同之处.
为什么调用方法直接构建正常但调用它作为扩展方法无法构建?
小智 1
CallerAssembly 是否有可能针对 .NET Framework 客户端配置文件,而 HelperAssembly 是否有可能针对“完整”.NET Framework?
当我这样做时,我遇到了扩展方法(和其他事情)的问题。
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |