我知道这可能是基本的,但我似乎无法向接口添加成员变量。 我尝试将接口继承到抽象类并将成员变量添加到抽象类,但它仍然不起作用。这是我的代码:
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的评论更新
答案 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();
}