【发布时间】:2012-09-18 13:08:50
【问题描述】:
我有一个用户控件来处理表单上的图像。但根据来源(网络摄像头或 ID 扫描或其他视频来源),用户控制是不同的。
但是它们有一些共同的特性,所以我想创建一个基类。
我的其他控件都有一些我需要的界面项。我想在基础级别声明接口,并在类级别实现。但 virtual 和 override 似乎是获得我想要的最接近的方式。有没有办法,强制新类实现基类分配的接口?环顾四周,让类抽象化(我不完全理解)可能是一个开始。如果只是方法可能没问题,但我也在使用属性。在那个领域,我在寻找答案时遇到了死胡同。这是我到目前为止所拥有的。我在正确的轨道上吗?我只是根本没有使用过抽象类,只接触过有限的接口。根据研究,我认为我的方法是正确的,只是不确定该属性。
public interface RequiredAnswer
{
void LabelRequiredFieldEmpty();
bool AnswerRequired{ get;}
}
public abstract partial class ExtImage : UserControl, RequiredAnswer
{
public virtual bool AnswerRequired
{
get
{
throw new NotImplementedException ("Answer Required");
}
}
public abstract void LabelRequiredFieldEmpty ()
{
//checkBox_AgreementAcceptedText.ForeColor = Color.Red;
}
所以我会上课
public partial class ExtImageWebCam : ExtImage
{
public override bool AnswerRequired
{
get
{
return valueFromThisClassThatMeansAnAnswerIsRequired;
}
}
public override void LabelRequiredFieldEmpty ()
{
// do something
}
}
【问题讨论】:
-
这是一种奇怪的大括号样式还是需要有人进行编辑?
-
我去看看,不是故意的
-
看起来有人已经编辑过了谢谢@BZink
标签: c# interface abstract-class base-class