2
我願做這樣的事情(大大簡化代碼):有點困惑泛型和類型
public class MyClass
{
private Type _listingType = typeof(AntiqueSellerListing);
public DeleteEntity(int id)
{
// This is what I would like to do, but it does not compile
SystemLogic.DeleteItem<this._listingType>(id);
// But this does
SystemLogic.DeleteItem<AntiqueSellerListing>(id);
}
}
的DeleteItem方法的定義如下:
public void DeleteItem<T>(int primaryKeyValue) where T : class
我可能在這裏錯過簡單的東西,但我不知道如何去做我想做的事情。
是否有任何理由爲什麼你需要運行時類型(與通過'typeof'獲得的編譯時類型相反)?如果確實如此,你應該使用多態而不是泛型。 – Douglas
你爲什麼想要做前者而不是後者?看起來你只是想讓DeleteEntity對我來說也是通用的,但在給定的例子中,你正在對事物進行硬編碼,所以很難看出類型將如何變化(假設它會)。 – Chris
也許做一些關於泛型與反射的研究?他們是兩個完全分開的東西。我明白爲什麼可能會出現混亂,但是當你明白了這一點後,你就會明白爲什麼 – MJM