2011-01-26 8 views
1

私はタイトルが示唆的ではないことを知っているので、私はいくつかのコードを使って説明しようとします:Cシャープ:文字列の名前だけを持つオブジェクトはどのように使用できますか?

public static Boolean IsIt(String nameObject1, String nameObject1) 
{ 
    //here I want to verify if nameObject1 is of type nameObject2 
} 
+0

オブジェクト名はどういう意味ですか?あなたはWinFormsコントロールについて話していますか? – CodesInChaos

+2

申し訳ありませんが、そのようにはできません。 – leppie

+1

あなたはこれを行う必要がある状況で自分を見つけるべきではありません。あなたは何か間違っている。 – meagar

答えて

2

あなたが名前の文字列表現を持っている場合、あなたは一つのオブジェクトが割り当て可能であるならば、あなたは確認することができ、Type表現を取得するためにType.GetTypeを使用することができます(私は確信が持てませんが、これはあなたが望むものとみなします)。以下の例では、私はあなたがnameObject2は、例えば、「可能System.String」のようなタイプの名前が含まれていることを言っているclass FooBaseclass Foo : FooBase

static bool IsIt(string nameObject1, string nameObject2) 
{ 
    Type type1 = Type.GetType(nameObject1); 
    Type type2 = Type.GetType(nameObject2); 
    return type2.IsAssignableFrom(type1); 
} 

static void Main() 
{ 
    bool b = IsIt(typeof(Foo).FullName, typeof(FooBase).FullName); 
} 
2

あなたが名前でそれを見ることができるいくつかのリスト内のオブジェクトへの参照を持っている必要があるだろう(たとえば、Dictionary<string, object>)、2つのオブジェクトを比較します。

private static Dictionary<string, object> objDictionary = new Dictionary<string, object>(); 

public static Boolean IsIt(String nameObject1, String nameObject2) 
{ 
    return objDictionary[nameObject1].ReferenceEquals(objDictionary[nameObject2]); 
} 
0

提案したインターフェイスを実装することはできません。 あなたはそれを変更することができれば、我々はそれを試してみることができます:

public static bool IsIt(object instance, Type type) 
{ 
    return instance.GetType() == type; 
} 
+0

@Martinが修正されました –

0

を作成していますか?もしそうなら、これはうまくいくでしょう。

public static Boolean IsIt(String nameObject1, String nameObject2) 
{ 
    Type t = Type.GetType(nameObject2); 
    return (nameObject1.GetType() == t); 
} 
関連する問題