我可以使用反射類型作爲類型參數嗎?例如。我想根據通過的對象選擇一個持卡人:我可以使用反射類型作爲類型參數嗎?
IPersister GetPersisterFor(IEntity entity)
{
return GetPersisterFor<entity.GetType()>(); // <-- this cannot be compiled
}
IPersister GetPersisterFor<TEntity>() where TEntity : IEntity
{
//some logic to get persister...
}
任何你爲什麼稱它爲惡的原因? :) –
@Rhys,因爲我需要把它叫做:) –
+1或者,你可以在調用樹上向泛型類型參數'T'推。在某種程度上,「實體」的確切類型可能是已知的,所以如果從這一點到「GetPersisterFor」的所有方法都將「T」保留爲泛型類型,則不需要使用「動態」。如果這是不可能的(頂層調用者只有一個'IYo'類型的變量可用),那麼這是'MakeGenericMethod'解決方案的一個很好的捷徑。 – jam40jeff