2015-10-19 53 views
2

的HOSTID返回我有下面的代碼片斷:NULL指針通過詢問用於門

var familyInstanceFilter = new ElementClassFilter(typeof(FamilyInstance)); 
var doorsCategoryfilter = new ElementCategoryFilter(BuiltInCategory.OST_Doors); 
var doorInstancesFilter = new LogicalAndFilter(familyInstanceFilter, doorsCategoryfilter); 
List<Element> doors = new FilteredElementCollector(doc) 
    .WherePasses(doorInstancesFilter) 
    .ToList(); 
FamilyInstance doorFI = (FamilyInstance)doors[0]; 
ElementId wallid = doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM) 
    .AsElementId(); 

其中我嘗試以獲得含有門壁的ID。但是,如果我運行此代碼,那麼行ElementId wallid =doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM).AsElementId();會引發空指針異常。我已經檢查過,有問題的門確實在牆內,應該有一個父對象。

我正在運行的測試場景是一個簡單的2個房間,它們之間有一個門的測試用例。

請注意,我知道什麼是空引用expcetion,我知道doorFI.Symbol.get_Parameter(BuiltInParameter.HOST_ID_PARAM)返回null,我想知道它爲什麼會返回null。 如果有什麼東西還不清楚,請隨時發表評論,以便我可以改善這個問題。

+0

不應該'(FamilyInstance)門[0];'是'(FamilyInstance)門[0];'? – Martin

+0

是的,你是正確的我改變了它。 – Thijser

+0

[可能的重複[什麼是NullReferenceException,我該如何解決它?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – HimBromBeere

回答

4

我相信你不應該需要符號:

doorFI.get_Parameter(BuiltInParameter.HOST_ID_PARAM).AsElementId(); 
+1

是的,正好!符號是門的類型,而不是門的實例。 –