我知道標題是不是暗示,所以我會嘗試使用一些代碼解釋:C Sharp:如何使用一個只有字符串名稱的對象?
public static Boolean IsIt(String nameObject1, String nameObject1)
{
//here I want to verify if nameObject1 is of type nameObject2
}
我知道標題是不是暗示,所以我會嘗試使用一些代碼解釋:C Sharp:如何使用一個只有字符串名稱的對象?
public static Boolean IsIt(String nameObject1, String nameObject1)
{
//here I want to verify if nameObject1 is of type nameObject2
}
如果你有名字的字符串表示,可以用Type.GetType
獲得Type
表示,那麼你就可以檢查是否一個對象是分配從其他(我認爲這是你想要的,雖然我不能確定)。在下面的例子中,我創建class FooBase
和class 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);
}
你必須有一些列表中的對象的引用,你可以看看它的名字(例如,在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]);
}
不可能實現您提出的接口。 如果你可以改變它,我們可以試試看:
public static bool IsIt(object instance, Type type)
{
return instance.GetType() == type;
}
你是說nameObject2包含類型名稱,如「System.String」的例子?如果是這樣,這將工作。
public static Boolean IsIt(String nameObject1, String nameObject2)
{
Type t = Type.GetType(nameObject2);
return (nameObject1.GetType() == t);
}
你是什麼意思的對象名?你在談論一個WinForms控件嗎? – CodesInChaos 2011-01-26 15:01:51
對不起,不可能這樣。 – leppie 2011-01-26 15:01:53