這個問題的上下文是一個MVC應用程序,它接受字符串並希望將它們轉換爲類型並將它們轉換爲通用代碼。如何從typeName字符串轉換爲泛型?
- 我有一個輸入類型的字符串表示形式。
- 我似乎無法將
Type
變量放在<>
的一個泛型方法中。 - 這是否意味着我必須手動拼出所有可能的情況和泛型方法調用?這是做到這一點的正確方法嗎?
- 如果
ModelBinder
能夠以某種方式找出類型,我可以爲操作方法public ActionResult Something<T>()
設置一個通用類型參數,這將很酷。但我不知道這是否可能。
例如
public ActionResult DoSomething(string typeName, int? id)
{
var type = Type.GetType(typeName);
if (type == typeof(Apple)) DoSomethingElse<Apple>(id);
if (type == typeof(Orange)) DoSomethingElse<Orange>(id);
//if etc ... to infinity
}
反思和泛型不是好朋友。 DozsomethingElse *實際上*需要是通用的嗎?如果它只需要一個Type作爲參數就會容易得多... –
@MarcGravell,我不知道。我的印象是使用泛型會比遍佈各地的類型更加乾燥和多功能。也許這是一個錯誤的印象。我會對個人對泛型的約束性工作感興趣。但如果仿製藥不能提供我想象中的好處,我也會感興趣。 – Benjamin
有興趣看到* – Benjamin