这可能最好用一个例子来描述。
我有两个结构:Dog 和 Cat,它们都属于 IAnimal。
IAnimal 有一个函数 ConvertFrom(IAnimal) ,它将任何从 IAnimal 继承的对象转换为与调用该函数相同的类型。
例如:
我调用 Dog.ConvertFrom(cat) 并得到一只狗,其字段映射自 cat。
我调用 Cat.ConvertFrom(dog) 并得到一只猫,其字段映射自 dog。
有没有办法用接口做到这一点?指定函数必须返回与实现该函数的类相同的类型?
我想简单地把它写成:
IAnimal ConvertFrom(IAnimal)
但我宁愿能够指定它作为狗或猫回来,而不是作为 IAnimal (从而减轻进一步的演员表)。