【发布时间】:2011-02-23 18:22:20
【问题描述】:
我有一个带有通用接口的 C# 项目
public interface IMyFoo<T> { void DoSomething(T instance); }
我还有一个 C# 项目,其接口继承自多个 IMyFoos
public interface IMyBar : IMyFoo<Type1>, IMyFoo<Type2> { ... }
在 C# 领域一切正常(包括以下在 VB 中不起作用的场景)。
我有一个引用此 C# 库的 VB .NET 项目。
我有一个 IMyBar 的实例并尝试如下使用:
Dim instance as MyType1 = ...
Dim bar as IMyBar = ...
bar.DoSomething(instance) ' This generates a compile error:
' 'DoSomething' is ambiguous across the inherited interfaces 'IMyFoo(Of MyType1)' and 'IMyFoo(Of MyType2)'.
怎么了?我可以像这样 DirectCast 并且效果很好……但我真的不想这样做
DirectCast(bar, IMyFoo(Of MyType1)).DoSomething(instance)
【问题讨论】:
-
MyType1和Type1和Type2之间的关系有点不明显。 -
gaearon:MyType1 和 MyType2 只是 C# 项目中定义的不相关的具体类。