「ダイナミック」というプロパティとSetDefaultValues()
同じDLLにあるメソッドがあります。プロパティを以下に示します
public class ManagedProperty: DataModelObject, ISerializable
{
public bool Dynamic
{
get
{
return m_dynamic;
}
set
{
m_dynamic = value;
}
}
private bool m_dynamic = true;
}
メソッドSetDefaultValues()は、デフォルトですべての値をデフォルトにします。現在直面している問題は、ウィンドウサービスを再起動するたびに、バグである元の値からデフォルトになっていることです。したがって、私が望んでいた条件は、「動的」プロパティがfalseである場合は常に、それが破損してはならないということです。
したがって、ウィンドウサービスでコードを引き起こす問題を以下に示します。デバッガーはプロパティ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
}
}