函数,该函数返回实现它的类类型的对象

本文关键字:函数 类型 对象 实现 返回 | 更新日期: 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)