如何从接口获取值

本文关键字:获取 接口 | 更新日期: 2023-09-27 18:03:46

我有一个这样的界面,

 public interface IResourcePolicy
   {
      string AgentVersion
      {
         get;
         set;
      }
      ResourcePolicy ResourcePolicy
      {
         get;
         set;
      }
   }
// implementation of AgentVersion only as of now i am showing
        public string AgentVersion
        {
            get
            {
                return m_agentVersion;
            }
            set
            {
                m_agentVersion = value;
            }
        }
        private string m_agentVersion = null;

在下面的代码中,我需要检查一个更多的条件,如m_agentVersion != null,我需要显示m_nullPolicy而不是m_nullString,这是现有的代码

public class ResourcePolicyConverter : StringConverter
   {
        private static string m_nullString = Managers.ControlStrings.GetString("ManagedDeviceWizard.None");
          private static string m_nullPolicy = Managers.ControlStrings.GetString("ManagedDeviceWizard.UnknownPolicy");
       if( value is ResourcePolicy )
                {
                   return ((ResourcePolicy)value).Identifier;
                }
                else if( value == null )
                {
                   return m_nullString;
                }}

如何做到这一点

如何从接口获取值

接口只能作为"必须这样"使用,并且所有内容必须保持不变。所以这是不可能的。

将此视为对什么是接口的完整解释。

正如@Cipi对你的主要问题的评论所说,你可能不得不使用抽象类来代替(见这里)

abstract class AgentVersionBase {
    public string AgentVersion {
        get {
            return m_agentVersion;
        }
    }
    private string m_agentVersion = string.Empty;
}
public class AgentVersion : AgentVersionBase {
    public string aMethod() {
        return base.AgentVersion;
    }
}

注意:对不起我的英语,我通常说法语

我认为你想使用抽象类和接口来做到这一点。抽象类实现接口并检查接口值,其他类只继承抽象类。并因此实现接口