如何在c#中向接口添加成员变量

时间:2010-04-08 04:50:33

标签: c# interface abstract-class

我知道这可能是基本的,但我似乎无法向接口添加成员变量。 我尝试将接口继承到抽象类并将成员变量添加到抽象类,但它仍然不起作用。这是我的代码:

public interface IBase {
  void AddData();
  void DeleteData();
}

public abstract class AbstractBase : IBase {
  string ErrorMessage;
  public abstract void AddData();
  public abstract void DeleteData();
}

public class AClass : AbstractBase {
  public override void AddData();
  public override void DeleteData();
}

根据Robert Fraser的评论更新

5 个答案:

答案 0 :(得分:11)

您不能向接口添加字段。接口只能包含方法,因此只能在接口decleration中声明方法,属性和事件。在字段的位置,您可以使用属性。

public interface IBase {  
  string ErrorMessage {get;set;}
  void AddData();  
  void DeleteData();  
}

答案 1 :(得分:2)

public interface IBase {
  void AddData();
  void DeleteData();
}

public abstract class AbstractBase : IBase {
  string ErrorMessage;
  public abstract void AddData();
  public abstract void DeleteData();
}

适合我。你错过了抽象类方法中的“public”和“void”。

答案 2 :(得分:1)

由于接口仅声明 - 实现细节,因此无法在接口中声明成员变量。

但是,您可以在界面上定义属性,并在类中实现该属性。

答案 3 :(得分:0)

如果是实现类需要实现的东西,那么使用属性定义i.e.

那说如果它是需要私有的东西那么它不应该是在界面中的任何东西。

答案 4 :(得分:0)

你的意思是属性而不是字段吗?

public interface IBase {
  string ErrorMessage { get; set; }
  void AddData();
  void DeleteData();
}

public abstract class AbstractBase : IBase {
  abstract string ErrorMessage { get; set; }

  // also, you need to declare a return type for the methods
  abstract void AddData();
  abstract void DeleteData();
}