不能访问继承类中的属性

本文关键字:属性 访问 继承 不能 | 更新日期: 2023-09-27 18:07:53

我得到了一个支持项目。有这样的控制层次:

public class MyWindowControl : MyControl<WindowControl>

MyControl有这样的层次结构:

public abstract class MyControl<T> : MyElement<T> where T : Control, new()

我正在做WindowControl修复,并陷入一种情况,即我需要的属性在MyControl内部,称为- Token

我需要得到它,但是没有办法我看到。有没有一种方法,也许我可以把它作为参数传递给构造函数?但如何?

下面是一个例子:

public class MyWindowControl : MyControl<WindowControl>
{
    public MyWindowControl()
    {
    }
}
public abstract class MyControl<T> : MyElement<T> where T : Control, new()
{
    public MyControl() :
        this(new T())
    {
    }
    public MyControl(T Element) :
        base(Element)
    {
    }
}
public abstract class MyElement<T> : MyScreenElement where T : FrameworkElement, new()
{
    public MyElement() :
        this(new T())
    {
    }
    public MyElement(T Element)
    {
    }
}
public abstract class MyScreenElement
{
    public MyClass Token { get; protected set; }
}

所以问题是我可以访问令牌内部的MyControl,但不是在WindowControl。在这种情况下,我如何将Token值作为参数传递或设置为属性在WindowControl类对象内?

请仔细看:我试图访问Token属性不是在MyWindowControl,而是在WindowControl

。在代码的当前结构中,我需要在WindowControl类中有Token的副本。我想问的是,有什么方法可以正确地做到这一点吗?

我不知道,也许:

public class MyWindowControl : MyControl<WindowControl(this.Token)>

不能访问继承类中的属性

简而言之,就像你有一个类Foo:

public class Foo
{
}

然后创建一个列表:

var fooList = new List<Foo>();

现在Foo 中的,您想访问fooList.Count。你不能。Foo不知道它被普遍使用。