1

我有一个名为“动态”的属性和SetDefaultValues()位于同一 DLL 中的方法。属性如下图

public class ManagedProperty: DataModelObject, ISerializable 
{

    public bool Dynamic 
    {
        get 
        {
            return m_dynamic;
        }
        set 
        {
            m_dynamic = value;
        }
    }
    private bool m_dynamic = true;
}

方法 SetDefaultValues() 会将所有值默认为默认值。我现在面临的问题是,每当我重新启动窗口服务时,它都会从原始值默认,这是一个错误。所以我想要的条件是每当“动态”属性为假时,它不应该被破坏

所以导致窗口服务中代码的问题如下所示。调试器显示属性 Dynamic 始终为 true

                          for (int i = 0; i < allObjects.Count; i++)
                                    {
                                        DataModelObject dmo = (DataModelObject)allObjects.GetAt(i);
                                        dmo.SatisfyGRs(allObjects); // Satisfy all GUID references.
                                        if (dmo is ManagedDevice)
                                        {
                                            ManagedDevice md = (ManagedDevice)dmo;

                                            // Set default values for user defined properties
                                            if (md.SetDefaultValues())
                                            {
                                                SaveObject(md, false);
                                            }
                                            md.CheckThresholds();   // Check thresholds on all properties
                                        }
                                    }

我修改它如下所示,但我不知道它不能正常工作,并设置为默认值。谁能告诉我这里出了什么问题,或者一切都正确,我需要检查其他环境

                          for (int i = 0; i < allObjects.Count; i++)
                                    {
                                        DataModelObject dmo = (DataModelObject)allObjects.GetAt(i);
                                        dmo.SatisfyGRs(allObjects); // Satisfy all GUID references.
                                        if (dmo is ManagedDevice)
                                        {
                                            ManagedDevice md = (ManagedDevice)dmo;
                                            ManagedProperty userprop = new ManagedProperty();
                                            if (userprop.Dynamic == false){
                                            // Set default values for user defined properties
                                            if (md.SetDefaultValues())
                                            {
                                                SaveObject(md, false);
                                            }}
                                            md.CheckThresholds();   // Check thresholds on all properties
                                        }
                                    }
4

1 回答 1

0

问题是您在字段初始化程序中将 m_dynamic 设置为 true :

private bool m_dynamic = true;

然后你有这个代码:

ManagedProperty userprop = new ManagedProperty();
if (userprop.Dynamic == false)

它怎么可能不是真实的呢?当您实例化一个 ManagedProperty 时,Dynamic 每次都会为真。

于 2012-11-29T13:11:29.913 回答