編集
どちらの質問も私の回答ではありません。おそらく、この質問に近づくためのより良い方法:
どのように型としてキャスト変数を使用しますか?
OR Type変数を宣言するために、型に文字列キャストを使用する方法を教えてください。キャストされた変数をどのようにタイプとして使用しますか?
例は、以下を参照してください
Document document = ((document)modelObject);
を文書の種類は、ここで使用されるが、私は私のmodelObjectは、私はそれを得るだろうか、ドキュメント知りませんでしたと言っていますか?
トンは、上記の私の例ではドキュメント
Type t = Type.GetType(type.Name);
t tVar = ((t)modelObject);
ある場合、それは動作しない架空の想像ソリューション「『T』は可変であるが、タイプのように使用される」ので
ORIGINAL
私はさまざまな型を動的に表示するように扱うために使用したいコントロール構造を持っています。これらのタイプは、タイプの名前で収集され、そのようなタイプに基づいて制御構造を入力します。私がしたいことは、フォルダーの機能を扱うことができるように(フォルダーの拡張を許可するなど)、フォルダーのコントロール構造を維持することですが、すべてのタイプを一般化して構造体を何度も繰り返しコピーするのではなく、処理する型をわずかに変更して単一の構造体を作成します。
だから、私の構造は(おおよそ)のようになります。STLとドキュメントタイプは、彼らは次のように扱われているものの種類変更の若干の変化にまったく同じ処理する方法
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);
}
は注意してください。 理想的には、それは次のようになります。
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'
は、そこで質問です:
文字列に基づいてタイプを入力するか、割り当てるために文字列を変換するには、「一般的な」方法はありますか?
ボード上でタイプ宣言を処理する一般的な方法はありません(のようなものが理想的です)。が理想的です。
私の例では何もインスタンス化されていません。これはキャストと呼ばれ、あなたの例の文字列の比較よりも安価です。しかし、それらを一様に処理したい場合(推奨)、私の2番目の例を参照してください。 –
2番目の例では、無数の異なるオプションにIExplorableインターフェイスを追加する必要があります。 – jtth
問題ですか?とにかく、ここでどんな種類の物体を話していますか?あなたが書いたクラスはありますか? –