最好用一个例子来描述。
我有两个结构:Dog和Cat,它们都属于IAnimal。
IAnimal具有一个功能ConvertFrom(IAnimal),它将从IAnimal继承的任何对象转换为与该函数相同的类型。
例如。:
我叫Dog.ConvertFrom(cat),然后得到一条狗,其中的字段是从cat映射过来的。
我叫Cat.ConvertFrom(dog),我得到一只猫,它的字段是从dog映射过来的。
有没有办法用接口做到这一点?指定该函数必须返回与实现该函数的类相同的类型?
我想简单地写成:
IAnimal ConvertFrom(IAnimal)
但我宁愿指定它以狗或猫的形式返回,而不是以IAnimal的形式出现(从而减轻了进一步的投放)。
最佳答案
您可能在谈论诸如Curiously Recurring Template Pattern之类的方法来实现静态多态性。
您可以使用泛型来实现:
public interface IAnimal
public interface IAnimal<T> : IAnimal where T : IAnimal<T>
public class Dog : IAnimal<Dog>
public class Cat : IAnimal<Cat>
然后您的方法变为:
T ConvertFrom(IAnimal someAnimal)
关于c# - 接口(interface)中的函数,该函数返回实现该类的对象的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15179041/