編輯
這兩個問題都不回答我的問題。也許更好的方法來解決這個問題:
你如何使用鑄造變量作爲類型?
或你如何使用一個字符串強制類型來聲明一個類型變量?你如何使用鑄造變量作爲類型?
示例,請參見:
Document document = ((document)modelObject);
的文檔類型用在這裏,但說我不知道我的modelObject是一個文件,我將如何獲得呢?
假設想像解決方案,其中t是文獻
Type t = Type.GetType(type.Name);
t tVar = ((t)modelObject);
在上述我的例子,這是行不通的,因爲「‘T’是可變的,但是,使用像類型」
ORIGINAL
我有一個控制結構,我想用它來處理動態顯示的不同類型。這些類型與類型收集。名稱然後基於這樣的輸入控制結構。我希望能夠做到的是保留文件夾的控制結構,這樣我就可以繼續處理文件夾功能(允許擴展文件夾等),但可以概括其他類型,以便它們都可以在一個單一的結構,而不是一遍又一遍地複製結構,但需要處理的類型略有改變。
所以,我看的結構(大致)是這樣的:
Type type = modelObject.GetType();
if (type.Name == "Folder")
{
Folder folder = ((Folder)modelObject);
TreeNode NewNode = new TreeNode(folder.Object_string);
NewNode.Tag = folder;
CurrentRootNode.Nodes.Add(NewNode);
if (fRecursive)
{
ModelObject[] objects = { modelObject };
String[] attributes = { "contents" };
WorkspaceObject[] NewNodeContents = ((Folder)modelObject).Contents;
AddContentsToNode(NewNode, NewNodeContents, true);
}
else
{
TreeNode EmptyNode = new TreeNode("");
NewNode.Nodes.Add(EmptyNode);
}
}
if (type.Name == "STL")
{
STL stl = ((STL)modelObject);
TreeNode NewNode = new TreeNode(stl.Object_string);
NewNode.Tag = stl;
CurrentRootNode.Nodes.Add(NewNode);
}
if (type.Name == "Document")
{
Document document = ((Document)modelObject);
TreeNode NewNode = new TreeNode(document.Object_string);
NewNode.Tag = document;
CurrentRootNode.Nodes.Add(NewNode);
}
注意如何STL和文檔類型的處理方式正好與改變什麼類型的,他們作爲處理的輕微變化相同。 理想的情況下,它應該是這樣的:
if (type.Name == "Folder")
{ ... }
else
{
(Type)type.Name tn = (((Type)type.Name)modelObject);
TreeNode NewNode = new TreeNode(tn.Object_string);
NewNode.Tag = tn;
CurrentRootNode.Nodes.Add(NewNode);
}
然而,從上面可以看出,type.Name是一個字符串。
(類型)type.Name懸停文字 - Cannot convert type 'string' to 'System.Type'
所以,問題是:
是否有「通用」的方式轉換成字符串類型,或者分配基於字符串類型?
我似乎無法找到任何通用的方式來處理整個董事會的類型聲明(如理想的例子將是理想!)。
在我的任何一個例子中都沒有得到實例;它被稱爲強制轉換,並且比您的示例中的字符串比較便宜。但如果你想統一處理它們(推薦),看看我的第二個例子。 –
第二個示例仍然要求將IExplorable接口添加到無數個不同的選項 – jtth
這是一個問題嗎?無論如何,我們在這裏談論什麼樣的物體?你寫的這些課程是? –