簡體   English   中英

接口中的函數,該函數返回實現該類的對象的類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM