我有这样的方法:
private static void OfElementType2(Type elementType, Type baseType)
{
var baseCollection = new FilteredElementCollector(DocumentManager.Instance.CurrentDBDocument)
.OfClass(baseType);
var derivedCollection = (from e in baseCollection.ToElements()
where e is elementType select e as elementType);
}
我正在接受
<{1}}的异常和&#39;类型&#39;是一个变量但是像Type
一样使用
where e is elementType
的异常。有人可以向我解释这个概念吗?
执行select e as elementType
并不能达到我的想象。我错过了什么?
修改
为遗失的背景道歉。我遇到的问题是有一个基于类的选择器,我可以使用typeof(elementType)
但它有某些派生类限制。所以基本上如果我有一个班级FilteredElementColector().OfClass()
,它就不会对它起作用,因为它来自Room
类。在这种情况下,我需要使用SpatialElement
类并检查它是否为SpatialElement
类型,以便我只能隔离Room
个对象(还有其他类继承自Room
})。我必须解决这些例外中的一小部分,这就是为什么我有这个问题的原因。我能够像这样解决它:
SpatialElement
答案 0 :(得分:1)
您必须针对具体类型进行测试,而不是变量(即使该变量的类型为Type
),这将不适用于此形式。但是,如果您知道类型,例如:Room
或SpatialEvent
,您可以对此进行测试。
见样本:
var derivedRoomCollection = baseCollection.ToElements().Where(t => t is Room)
var derivedSpatialEventCollection = baseCollection.ToElements().Where(t => t is SpatialEvent)
答案 1 :(得分:0)
该错误基本上表明标识符elementType
不是实际类型,您需要将其替换为具体类型。