我有一个问题,编译器似乎没有正确看到接口类。我有一个名为 Ctrl 的基类和一些派生类 、Ctrl_BUTTON
等Ctrl_CHECKBOX
。其中一些但不是全部都需要一个 Font 属性,以便我可以在运行时轻松测试该类是否支持某个Font
属性。因此我有一个接口类,ICtrl_Font
. 但是,我收到了设计时错误:
“AppData.Ctrl_CHECKBOX”不包含“Font”的定义,并且找不到接受“AppData.Ctrl_CHECKBOX”类型的第一个参数的扩展方法“Font”(您是否缺少 using 指令或程序集引用?)
我拥有的代码结构。
类ICtrl_Font
:
namespace AppData
{
public interface ICtrl_Font
{
Font Font { get; set; }
}
}
Ctrl_CHECKBOX
因此使用ICtrl_Font
(为了清楚起见,我已经删除了不相关的代码):
namespace AppData
{
public class Ctrl_CHECKBOX : Ctrl, ICtrl_Font
{
private Font _font = new Font("Microsoft Sans Serif", (float)8.25, FontStyle.Regular, GraphicsUnit.Point);
public override Ctrl Clone()
{
Ctrl_CHECKBOX oCopy;
try
{
oCopy = new Ctrl_CHECKBOX(base.Globals, base.Server, base.App, base.Frm);
if (!base.Copy(oCopy)) throw new Exception(string.Format("Could not clone Ctrl class for {0} copy.", base.CtrlTypeCode));
oCopy.DesignTimeValue = _designTimeValue;
oCopy.Enabled = (_enabled.GetType() == typeof(Expression)) ? ((Expression)_enabled).Clone() : _enabled;
oCopy.Font = new Font(_font.Name, _font.Size, _font.Style, GraphicsUnit.Point);
oCopy.Text = (_text.GetType() == typeof(Expression)) ? ((Expression)_text).Clone() : _text;
oCopy.Value = (_value.GetType() == typeof(Expression)) ? ((Expression)_value).Clone() : _value;
return (Ctrl)oCopy;
}
catch (Exception ex)
{
throw ex;
}
}
Font ICtrl_Font.Font
{
get { return _font; }
set
{
_font = value;
Console.WriteLine("CHECKBOX: Font.Name -> " + _font.Name);
base.OnPropertyValueChanged(this, new AppData.PropertyValueChangeEventArgs(this, "Font"));
}
}
}
}
我从该行Ctrl_CHECKBOX
的Clone
方法内部以及引用oCopy.Font = ...
的代码的其他地方得到错误Ctrl_CHECKBOX.Font
。
我该如何解决这个问题?谢谢。