我有一个名为“动态”的属性和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
}
}