在C#中時,我有一個方法傳遞一個泛型類型「階級」只有有一個字符串
public string GetString<T>() where T : class
在調用函數我有我想傳遞給GetString()<T>
只有類的名稱。例如。 「我的課」。我如何將「MyClass」轉換爲class
? 我試過用Type
s,但找不到轉換。
編輯: 真正的例子是來自數據庫訪問類。 客戶端要求提供特定硬件組件的信息。該組件由字符串指定。基於這個字符串,我想訪問一個已知名稱模式的表。不硬編碼表名允許我們從數據庫添加/刪除表,而無需更改C#代碼。
返回所需信息的函數已經存在,需要一個class
作爲泛型類型。
E.g.
string tblName = "HW_" + hwComponentFromClient;
string retValue = GetString<GetClassByString(tblName)>();
我需要類似的方法:
class GetClassByString(string);
爲什麼你有一個班級的字符串?這似乎是真正的問題。爲什麼在編譯時不可能知道你想使用哪個類? –
如果你在編譯時不知道類,你將不得不求助於反射或動態,這兩者都不是編譯時類型安全的。是否沒有可以投射到的基類或接口? –