2011-01-26 44 views
1

我知道標題是不是暗示,所以我會嘗試使用一些代碼解釋:C Sharp:如何使用一個只有字符串名稱的對象?

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

你是什麼意思的對象名?你在談論一個WinForms控件嗎? – CodesInChaos 2011-01-26 15:01:51

+2

對不起,不可能這樣。 – leppie 2011-01-26 15:01:53

回答

2

如果你有名字的字符串表示,可以用Type.GetType獲得Type表示,那麼你就可以檢查是否一個對象是分配從其他(我認爲這是你想要的,雖然我不能確定)。在下面的例子中,我創建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>中),然後比較這兩個對象。

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

你是說nameObject2包含類型名稱,如「System.String」的例子?如果是這樣,這將工作。

public static Boolean IsIt(String nameObject1, String nameObject2) 
{ 
    Type t = Type.GetType(nameObject2); 
    return (nameObject1.GetType() == t); 
} 
相關問題