我从具有此属性的类继承:
public bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
我试图在派生类中覆盖它,但它无法识别isAuthorized
。有人可以用我的语法帮助我吗?
public override bool isAuthorized()
{
}
这是我得到的错误:
cannot override because 'CDBase.isAuthorized' is not a function
编辑:所以如果我希望覆盖始终将isAuthorized设置为true,我会使用这种语法吗?
private bool _Authorized = false;
public override bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = true; }
}
答案 0 :(得分:4)
它是一个属性,您用作方法isAuthorized()
()
- 用于方法
你必须在你的派生类
中做public override bool isAuthorized
{
}
答案 1 :(得分:2)
与您希望方法可以覆盖的情况相同时,该属性也必须在基类中声明为虚拟:
public virtual bool isAuthorized ...
此外,您无法使用方法覆盖propeprty。您只能覆盖派生类中的getter和setter:
public override bool isAuthorized
{
get { return base.isAuthorized; }
set { base.isAuthorized = value; }
}
答案 2 :(得分:2)
原始类应该有一个虚拟,但我怀疑你可能也有一个问题,即你试图用派生类方法覆盖基类属性。
如果派生类方法如下所示:
public override bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
然后你需要在基类中使用它:
public virtual bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
你能否更多地去实现你想要实现的目标?
答案 3 :(得分:2)
要将值始终设置为true,您只需编写以下代码:
public override bool isAuthorized
{
get { return true; }
}
答案 4 :(得分:0)
public virtual bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
public override bool isAuthorized
{
...
}
答案 5 :(得分:0)
在基类中,将要覆盖的属性标记为virtual
,并在派生类中使用override
关键字作为需要覆盖的属性。
答案 6 :(得分:0)
此
class A
{
public virtual string prop { get; set; }
}
class B : A
{
public override string prop
{
get
{
return "overridden";
}
set
{
base.prop = value;
}
}
}
答案 7 :(得分:0)
您好我认为您必须将此声明为能够覆盖的虚拟
像:
public virtual bool isAuthorized
{
得到{return _Authorized; }
设置{_Authorized = value; }
}
Regars,
答案 8 :(得分:0)
在基类中,您可以将其标记为虚拟,并且可以覆盖。 实际上,使用反射器我们也可以看到属性也是方法!
答案 9 :(得分:0)
关于您的错误和语法: 只是不要使用'()'。您正在使用属性作为方法。
关于如何做到:
在基类中实现它有两种方法。 '新'和'覆盖'。但是它们的实现因基类而异。
http://msdn2.microsoft.com/en-us/library/435f1dw2.aspx
new修饰符指示编译器使用您的实现而不是基类实现。任何不引用您的类但基类的代码都将使用基类实现。
public bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
public new bool isAuthorized
{ //someth }
http://msdn2.microsoft.com/en-us/library/ebca9ah3.aspx
override修饰符可用于虚方法,必须用于抽象方法。这表明编译器使用方法的最后定义的实现。即使在对基类的引用上调用该方法,它也会使用覆盖它的实现。
public virtual bool isAuthorized
{
get { return _Authorized; }
set { _Authorized = value; }
}
public override bool isAuthorized
{ //someth }