class MyBaseClass{}class MySubClass : MyBaseClass{}interface MyInterface{ MyBaseClass someFunction();}class MyImplementation : MyInterface{ public MySubClass someFunction() { return null; }}
生成以下错误:
‘Mynamespace.MyImplementation’ does not implement interface member ‘Mynamespace.MyInterface.someFunction()’. ‘Mynamespace.MyImplementation.someFunction()’ cannot implement ‘Mynamespace.MyInterface.someFunction()’ because it does not have the matching return type of ‘Mynamespace.MyBaseClass’.
这也是需要接口与实现的问题.例如,如果我有一个带有返回IList的函数的接口,我的实现就不能返回一个List – 它必须返回一个IList.
我做错了什么或者这是C#接口的限制?
解决方法 C#不支持协变返回类型.实现接口时,必须返回接口指定的类型.如果需要,可以显式实现接口,并使用另一个返回子类型的同名方法.例如:class MyImplementation : MyInterface{ MyBaseClass MyInterface.someFunction() { return null; } public MySubClass someFunction() { return null; }}总结
以上是内存溢出为你收集整理的C#接口和类型伪装全部内容,希望文章能够帮你解决C#接口和类型伪装所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)