VB.NET与C#交叉兼容

VB.NET与C#交叉兼容,第1张

概述我有一个带有通用接口的C#项目 public interface IMyFoo<T> { void DoSomething(T instance); } 我还有一个C#项目,其接口继承了几个IMyFoos public interface IMyBar : IMyFoo<Type1>, IMyFoo<Type2> { ... } 在C#land中一切正常(包括下面的方案在VB中不起作用). 我有一 我有一个带有通用接口的C#项目

public interface IMyFoo<T> { voID DoSomething(T instance); }

我还有一个C#项目,其接口继承了几个IMyFoos

public interface IMybar : IMyFoo<Type1>,IMyFoo<Type2> { ... }

在C#land中一切正常(包括下面的方案在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)
解决方法 你可能要去 cast:

与仅从单个基本类型派生的其他类型不同,接口可以从多个基本接口派生.因此,接口可以从不同的基接口继承同名的类型成员.在这种情况下,乘法继承的名称在派生接口中不可用,并且通过派生接口引用任何这些类型成员会导致编译时错误,无论签名或重载如何.相反,必须通过基接口名称引用冲突类型成员.

总结

以上是内存溢出为你收集整理的VB.NET与C#交叉兼容全部内容,希望文章能够帮你解决VB.NET与C#交叉兼容所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1236090.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存