我有一个带有通用接口的C#项目。
public interface IMyFoo<T> { void DoSomething(T instance); }
我还有一个C#项目,其中的接口继承自多个IMyFoos
public interface IMyBar : IMyFoo<Type1>, IMyFoo<Type2> { ... }
在C#领域中一切都很好(包括下面的场景,但在VB中无法正常工作)。
我有一个VB .NET项目,引用了这个C#库。
我有一个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
之间的关系有些不明显。 - Dan Abramov