c# 在属性上实现接口(interface)

标签 c# vb.net interface implements

我正在使用一些 VB 代码。我正在用 c# 重写原始 VB 代码中的一些内容

在我的 VB 类中:

    Implements actionBaseClass

    Private m_config_url As String
    Private m_config_unc As String
    Private m_connection_string As String
    Private m_xml_doc_path_or_data As String
    Private m_fpid As String
    Private m_cancelled As Boolean
    Private m_xml_doc_element As Xml.XmlElement
    Private m_removing As Boolean
    Private m_xml_doc As New Xml.XmlDocument


    Property XMLDocPathOrData() As String Implements actionBaseClass.XMLDocPathOrData
        Get
            XMLDocPathOrData = m_xml_doc_path_or_data
        End Get
        Set(ByVal Value As String)
            m_xml_doc_path_or_data = Value
        End Set
    End Property

    WriteOnly Property FPId() As String Implements actionBaseClass.FPId
        Set(ByVal Value As String)
            m_fpid = Value
        End Set
    End Property

我转换后的 C# 接口(interface):

interface actionBaseClass
{

    public bool UseStringData { get; }
    string XMLDocPathOrData { get; set; }
    string FPId { set; }
    string ConfigURL { set; }
    string ConfigUNC { set; }
    string ConnectionString { set; }
    bool Cancelled { get; }
    void ActionMe();
    void DisposeMe();

}

到目前为止我转换的 C# 类:

 public partial class Form1 : Form, actionBaseClass
    {


        #region Public Implements from base class

        private string m_config_url, m_config_unc, m_connection_string, m_xml_doc_path_or_data, m_fpid;
        private bool m_cancelled, m_removing;
        private XmlElement m_xml_doc_element;
        private new XmlDocument m_xml_doc;

        public bool UseStringData
        {
            get { return false; }
        }


        public string XMLDocPathOrData

        {
            get { return actionInterface.XMLDocPathOrData = m_xml_doc_path_or_data; }
            set { m_xml_doc_path_or_data = value; }
        }

        public string FPId
        {
            set { m_fpid = value; }
        }

如何在 C# 中像上述 VB 代码一样在属性声明中使用 Implements?还是在使用 Implements <interface_name> 后不必在 C# 中执行此操作?

最佳答案

您不必在 C# 中为从接口(interface)实现某些内容的每个属性和方法指定 Implements 关键字。只要签名匹配,编译器就知道该属性或方法是接口(interface)的实现。

关于您的代码的另外两个注释:

  1. 惯例是接口(interface)名称以大写 I 开头,例如 IAction
  2. 对类和接口(interface)名称使用 PascalCase
  3. 如果它是一个接口(interface),它被称为“BaseClass”是没有意义的
  4. 您不必在接口(interface)的属性和方法中指定 public(请参阅 UseStringData)

关于c# 在属性上实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33398216/

相关文章:

c# - usql 应用程序和脚本的单元测试

c# - 当值为0000-00-00 00 :00:00时如何处理mysql datetime列

asp.net - 如何在itextsharp中的段落下添加下划线

c# - 在循环中使用 Task.Factory.StartNew

c# - 从 Angular 发送到 c# api 失败

vb.net - 声明共享 MustOverride

database - 使用 DataGridView 更新多个表

c# - 通过界面搜索列表

java - 标记界面的目的是什么?

java - 如何避免实现所有方法