如何添加操作<;字符串>;到接口
本文关键字:lt 字符串 gt 接口 操作 何添加 添加 | 更新日期: 2023-09-27 18:28:27
正如问题标题所示,我想向接口添加一个Action<string>
。这可能吗?此时它显示Interfaces cannot contain fields
您需要将其添加为属性:
public interface IYourInterface
{
Action<string> YourAction { get; set; }
}
没有get/set,它只是一个字段,正如编译器所指出的,接口不能包含字段。这确实意味着,当你实现这个接口时,你也需要提供实际的属性(尽管显然它可以是一个简单的自动属性):
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
// ...
}
考虑到这一点,您可以从界面使用Action<string>
IYourInterface iFoo = new Foo();
iFoo.YourAction = s => Console.WriteLine(s);
iFoo.YourAction("Hello World!");
正如Hans所指出的那样,如果您愿意,您可以在界面中只指示一个get
(甚至只指示set
)。这并不意味着类不能有另一个,它只是意味着不能通过接口访问它。例如:
public interface IYourInterface
{
Action<string> YourAction { get; }
}
public class Foo : IYourInterface
{
public Action<string> YourAction { get; set; }
}
因此,在上面的代码中,您可以通过接口仅作为get
访问YourAction
属性,但您可以从Foo
类访问set
或get
属性。
接口不能包含字段,但可以包含属性,因此可以通过这种方式添加。
我引用:
"接口由方法、属性、事件、索引器或任何这四种成员类型的组合。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型。它不能包含静态成员。接口成员为自动公开,并且它们不能包括任何访问修饰符"
由于Action是一个feild,它不可能是接口的一部分。http://msdn.microsoft.com/en-us/library/ms173156.aspx