[英]Function in an Interface which returns an object of the type of whatever class implements it
最好用一個例子來描述。
我有兩個結構:Dog和Cat,它們都屬於IAnimal。
IAnimal具有一個功能ConvertFrom(IAnimal),它將從IAnimal繼承的任何對象轉換為與該函數相同的類型。
例如:
我叫Dog.ConvertFrom(cat),然后得到一條狗,其中的字段是從cat映射過來的。
我叫Cat.ConvertFrom(dog),然后得到一只貓,其中的字段是從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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.