Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从继承的类重写虚拟属性_C#_.net_Inheritance - Fatal编程技术网

C# 无法从继承的类重写虚拟属性

C# 无法从继承的类重写虚拟属性,c#,.net,inheritance,C#,.net,Inheritance,我的自定义Sitecore控件继承自Sitecore.Web.UI.HtmlControls.control。此类按如下方式定义属性值: public virtual string Value { get { return this.GetViewStateString("Value"); } set { if (!(value != this.Value)) return; this.SetView

我的自定义Sitecore控件继承自Sitecore.Web.UI.HtmlControls.control。此类按如下方式定义属性值:

public virtual string Value {
    get {
        return this.GetViewStateString("Value");
    }
    set {
        if (!(value != this.Value))
            return;
        this.SetViewStateString("Value", value);
    }
}
public class ClientProfileSelector : Sitecore.Web.UI.HtmlControls.Control, IContentField {
    ...

    public override string Value {
        get {
            return this.MyOwnValue;
        }
        set {
            if (!(value != this.MyOwnValue))
                return;
            this.MyOwnValue = value;
        }
    }

    ...
}
我的自定义类定义如下:

public virtual string Value {
    get {
        return this.GetViewStateString("Value");
    }
    set {
        if (!(value != this.Value))
            return;
        this.SetViewStateString("Value", value);
    }
}
public class ClientProfileSelector : Sitecore.Web.UI.HtmlControls.Control, IContentField {
    ...

    public override string Value {
        get {
            return this.MyOwnValue;
        }
        set {
            if (!(value != this.MyOwnValue))
                return;
            this.MyOwnValue = value;
        }
    }

    ...
}
整个类的代码都可用

我的类由Sitecore自动实例化,但我知道它正在运行,因为我可以进入其中定义的其他方法。例如,我的自定义类中的方法GetValue()调用字段值,如下所示:

public string GetValue() {
    return string.IsNullOrEmpty(CalculatedValue) ? CalculatedValue : Value;
}
但是,当我在定义和基类的定义中都添加了断点之后跨过它时,执行会在基类中停止


我做错了什么?

你试过调试这个吗?您确定使用了基类的getter/setter吗?如何实例化类?请注意,这是一个属性,而不是字段。没有虚拟字段。是的,当然是我调试的。我的类由Sitecore实例化,我知道它正在运行,因为我可以进入它的其他方法。例如,我的自定义类中的方法GetValue()调用字段值,但是当我进入它时,我从它的基类中获取定义。您可能也可以包括您的类定义吗?我知道这种样式在基类中,但是如果(!(Value!=this.MyOwnValue))应该是
if(Value==this.MyOwnValue)
以提高可读性