出于某种原因,我遇到了接口(interface)问题。我知道已经发布了 100 个示例,但显然我不够聪明,无法弄清楚...
我有以下界面:
namespace DocStore.Interfaces
{
public interface IResetCategoryControl
{
string CategoryToAdd { set; }
}
}
我想将 CategoryToAdd 设置为一个值。
这是我想要设置的类(class)以及目前我拥有的类(class):
public partial class AddDocumentsDialog : IResetCategoryControl
public string CategoryToAdd
{
set
{
IResetCategoryControl() ireset = new IResetCategoryControl();
ireset.CategoryToAdd = value;
}
}
}
我在 AddDocumentDialog 类中做错了什么?我无法让那部分工作。
谢谢!
埃洛克
最佳答案
我不确定你想在你的 setter 中做什么......但下面这行给你带来了问题:
IResetCategoryControl() ireset = new IResetCategoryControl();
首先,声明变量类型时不要使用括号。其次,您不能直接实例化接口(interface)的实例。为了使该声明有效,它必须符合以下内容:
IResetCategoryControl iReset = new SomeConcreteResetCategoryControl();
还有一个更大的问题:
从理论上讲,您的类正在实现该接口(interface),该接口(interface)指定您需要一个名为 CategoryToAdd
的属性和一个公共(public) setter 。该属性应该在您的类上设置值...而不是另一个类的新实例。
我希望代码看起来像这样:
public partial class AddDocumentsDialog : IResetCategoryControl
{
private string categoryToAdd;
public string CategoryToAdd
{
set
{
// do some logic to validate the value
categoryToAdd = value;
}
}
}
您可能还想重新考虑您的界面设计,因为通常不鼓励仅设置属性(赞成使用方法,因为仅设置属性表示正在执行一定数量的逻辑并且该值仅由类而不是被消费者再次访问)。
关于C#接口(interface)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4087975/