2012-06-29 23 views
1

我給出的錯誤不承認通過型式

「的類型或命名空間名稱passedType'找不到(是否缺少using指令或程序集引用?)」

對函數內部的兩個引用進行了傳遞。爲什麼它不識別「傳遞類型」變量?

public bool ObjectIsInHighlightedList(object thing, Type passedType) 
{ 
    foreach (object obj in _highlightedList) 
    { 
    if (obj is passedType && thing == (passedType)obj) 
     return true; 
    } 
} 
+0

passedType是type類型。所以你的obj對象應該被轉換爲Type。 –

+0

你是否總是靜靜地知道'passedType'?如果是這樣,你應該改變這個方法到一個通用的方法,然後你可以測試'obj是T'。 –

回答

1

嘗試使用IsAssignableFrom方法。

public bool ObjectIsInHighlightedList(object thing, Type passedType) 
{ 
    foreach (object obj in _highlightedList) 
    { 
    if (passedType.IsAssignableFrom(obj.GetType()) && (object)thing == obj) 
     return true; 
    } 
} 

這實際上將是一個通用的方法,一個好的方案,但是:

public bool ObjectIsInHighlightedList<T>(object thing) 
{ 
    foreach (object obj in _highlightedList) 
    { 
    if (obj is T && thing == (T)obj) 
     return true; 
    } 
}