2012-11-29 78 views
1

我有一个属性称为“动态”和方法SetDefaultValues()位于相同的DLL。属性如下所示如何访问位于不同的DLL

public class ManagedProperty: DataModelObject, ISerializable 
{ 

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

方法SetDefaultValues()将所有默认值中defult.The的问题,现在我面临的是每当我重新启动我的窗口服务,它是从一个错误原值违约。所以我想要的条件是每当“动态”属性是假的,它不应该狡猾

因此,窗口服务中导致代码的问题如下所示。调试器显示属性的动态总是如此

      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 
             } 
            } 
+0

这是全部内存,对不对?当您重新启动服务时,内存中的所有内容都将丢失。如果你想在重新启动之间保持状态,那么你需要在重新启动之前保持该状态(文件,DB等),然后在重新启动之后加载该状态。 –

+0

@鲍勃霍恩,没有重新启动之前我保存,我可以看到数据库xml中的值,但是当我重新启动一切defalut。我的助手没有正确连接,我是如何知道这个问题导致的意思,当我评论这段代码时,它正常工作 – ponting

+0

你在if语句中只是有一个错误吗?你说什么时候它是错误的,它不应该默认。你的陈述不应该像这样:'if(userprop.Dynamic!= false)'?就目前来看,只有在它已经是假的时候它才会默认。 –

回答

0

的问题是,你在一个字段初始设置m_dynamic为true:

private bool m_dynamic = true; 

然后你有这样的代码:

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

怎么可能永远不是真正的其他东西吗?当您实例化ManagedProperty时,动态将每次都为真。

+0

没有这将无法正常工作,我需要一个机制来发送动态值当前值窗口服务 – ponting