0
我有一个类的最后一个对象,我们称之为MyClass的,有几个特性,其中之一是一个COM对象(从iFeature的ESRI的ArcObjects)。其他属性是标准的.NET对象。所以它看起来像这样:COM对象都指向于加入
public class MyClass
{
//COM object
public IFeature Feature { get; set; }
public MyOtherClass Other { get; set; }
}
这个人通过Add方法被添加到另一个类的列表中。然后,这些MyClass对象在列表中的类中的foreach循环中枚举。例如:
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.
}
}
}
我注意到了奇怪的行为。其他属性正确枚举 - 当我调试时,我发现它通过列表中的每个对象并获取当前值。但Feature属性总是指向集合中最后一个MyClass对象的值。
有没有其他人遇到过吗?
有一些奇怪的事情COM回事,我是不知道的?
显示调用'DoStuffClass.Add'的代码,并创建你的'MyClass'对象的代码(如果分开)。我怀疑你只是在一个错误的范围内有一个对象。 – 2013-05-10 17:12:28
我在Add方法中做了一个测试,在这个方法中我检查了要添加的对象的Feature属性中的值,它们是正确的,所以我不认为这是问题。 – lintmouse 2013-05-10 17:14:49
取决于你如何检查,这可能没有帮助。例如。 http://ideone.com/8I4oXR – 2013-05-10 17:21:45