实际上我不知道他们是否应该工作
我在C#中创建了一个库,我被人们告知我的一种方法在VB.NET中不能作为扩展 http://valueinjecter.codeplex.com/Thread/View.aspx?ThreadId=227498
这是方法:
public static PropertyDescriptorCollection GetProps(this object o)
{
return GetProps(o.GetType());
}
答案 0 :(得分:5)
一般来说,C#扩展方法在VB.Net中运行得很好,反之亦然。一个例外是this
参数明确键入Object
时。由于遗留原因,VB.Net不支持在键入Object
的引用上使用扩展方法。
之所以有可能导致代码以不同的语义静默重新编译。 VB.Net(和C#)认为导入包含扩展方法的命名空间不应该导致现有代码的静默重新绑定到扩展方法。如果VB.Net允许在Object
上使用扩展方法,则后期绑定调用可能会以静默方式重新绑定到扩展方法,从而更改代码。
例如。请考虑在扩展方法之前编写的以下内容。
Dim local As Object = ...
local.GetProps() ' This is a late bound call
如果VB.Net允许在GetProps
上定义Object
扩展方法,那么只需导入命名空间就会将GetProps
的含义从后期绑定更改为扩展方法调用。