函数,该函数返回实现它的类类型的对象
本文关键字:函数 类型 对象 实现 返回 | 更新日期: 2023-09-27 18:01:48
最好用一个例子来说明。
我有两个结构体:Dog和Cat,它们都属于IAnimal。
IAnimal有一个函数ConvertFrom(IAnimal),它可以将从IAnimal继承的任何对象转换为调用该函数的相同类型。
例如:
我调用dog . convertfrom (cat),我得到一个dog,它的字段映射自cat。
我调用cat . convertfrom (dog),我得到一个cat,它的字段映射自dog。
有什么方法可以用接口做到这一点吗?指定函数必须返回与实现该函数的类相同的类型?
我想简单地写成:
IAnimal ConvertFrom(IAnimal)
,但我更希望能够指定它将以狗或猫的形式返回,而不是以IAnimal的形式返回(从而减少进一步的转换)。
您可能正在谈论实现静态多态的奇怪循环模板模式之类的东西。您可以使用泛型来拥有:
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)