简体   繁体   English

如何将抽象基类转换为泛型派生类并访问子类的属性?

[英]How to convert an abstract base class to generic derived class and access properties of the child class?

I have my class hierarchy as follows: 我的班级层次结构如下:

[DataContract]
[Serializable]
[KnownType(typeof(ChildClass2<>))]
public abstract class BaseClass
{
    protected BaseClass(string property1)
    {
        this.Property1 = property1;
    }

    [DataMember]
    public string Property1 { get; private set; }

    public abstract bool Method1(string inputValue);
}


[DataContract]
[Serializable]
public abstract class ChildClass1<T> : BaseClass
{
    protected ChildClass1(string property1, T property2) : base(property1) 
    {
        this.Property2 = property2;
    }

    [DataMember]
    public T Property2 { get; private set; }
}


[DataContract]
[Serializable]
public class ChildClass2<T> : ChildClass1<T>
{
    public ChildClass2(string proprty1, T property2)
        : base(property1, property2)
    {
    }

    public override bool Method1(string inputValue)
    {
      // Some processing....

    }
}

Now I am instantiating ChildClass2 as baseClass type like below: 现在,我将ChildClass2实例化为baseClass类型,如下所示:

BaseClass baseClass = ChildClass2<string>("test1", "test2");

How can I cast baseClass to ChildClass2 type so I can access baseClass.Property2? 如何将baseClass强制转换为ChildClass2类型,以便可以访问baseClass.Property2?

I tried something like (ChildClass2)baseClass.Property2 does not work. 我尝试了类似(ChildClass2)baseClass.Property2的操作。

BaseClass baseClass = ChildClass2<string>("test1", "test2");
string value = ((ChildClass2<string>) baseClass).Property2;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM