[英]How to find out the generic type passed to the parent
請告訴我如何確定在 inheritance 期間傳遞給參數 generics 的類型
public abstract class BaseEntity
{
}
public class DogEntity : BaseEntity
{
}
public interface IAnimal
{
}
public abstract class Animal<TEntity> : IAnimal
where TEntity : BaseEntity
{
}
public class Dog : Animal<DogEntity>
{
}
我只有 Dog 實體類型,我需要得到 DogEntity
Type type = typeof(Dog);
我將不勝感激任何幫助或提示
使用反射
Type type = typeof(Dog)
.BaseType
.GetGenericArguments()
.Single();
Dog to Animal 是 Inheritance 的經典案例,多態性 - 不是 generics。 就在那里,形狀/圓形/球體。 它應該是DogEntity: AnimalEntity
和AnimalEntity: BaseEntity
。 這個 inheritance 鏈真的沒有意義。
generics 的全部意義在於您可以輸入幾乎任何類型,並且仍然具有編譯時類型檢查。 您永遠不必檢查類型,編譯器會為您完成。
如果您想知道具有 90% 概率的 generics 類型,那么您沒有 generics 場景。 您很可能正在重新發明壓倒一切。 我看到人們經常傾向於 generics + 類型檢查錯誤,而普通的舊多態/覆蓋將是答案。 它可能是當今時代最常見的 XY 問題示例之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.