我有一个类,我们称之为MyClass,它有几个属性,其中一个属性是COM对象(来自ESRI ArcObjects的IFeature)。其他属性是标准.NET对象。所以它看起来像这样:
public class MyClass
{
//COM object
public IFeature Feature { get; set; }
public MyOtherClass Other { get; set; }
}
这个人通过Add方法被添加到另一个类的列表中。然后,使用列表在类的foreach循环中枚举这些MyClass对象。类似的东西:
public DoStuffClass()
{
private List<MyClass> myClasses;
public void Add(MyClass myClass)
{
this.myClasses.Add(myClass);
}
public void DoStuff()
{
foreach (MyClass myClass in this.myClasses)
{
//Do stuff here.
}
}
}
我注意到了奇怪的行为。 Other属性被正确枚举 - 当我调试时,我看到它遍历列表中的每个对象并获取当前值。但Feature属性始终指向集合中最后一个MyClass对象的值。
还有其他人遇到过这个吗?
是否有一些奇怪的COM事情正在发生,我不知道?
答案 0 :(得分:-1)
IFeatureCursor featureCursor = featureClass.Search(queryFilter, false);
第二个参数用于回收。这就是我设置为false以实现所期望的行为。