如果两个不同的不相关程序集希望使用委托和/或接口类型(例如
接口 IFoo {void Foo(); } 委托 void ActionByRef<T>(ref T param)_;
每个都有自己的目的,但是使用它们的第三个程序集可能希望在两个程序集之间传递对象,.net 需要发生什么来决定应该接受一个程序集的IFoo
或公开的作为输入ActionByRef<T>
另一个?我知道 .net 没有对委托类型使用简单的结构相等性(这意味着例如期望 a 的例程Func<int,bool>
将不接受 a Predicate<int>
,即使两种类型都表示具有相同签名的函数),但确切的规则是什么?如果希望设计一个与 .net 2.0 和 4.0 兼容的程序集,并让它接受具有三个参数的方法的委托,有没有办法定义一个Action<T1,T2,T3>
这样程序集在链接到 .net 2.0 程序时将使用其内置的程序集,但在与 .net 4.0 链接时将接受同名的框架定义委托的参数?