У меня есть класс иерархии следующим образом:Как преобразовать абстрактный базовый класс в общий производный класс и свойства доступа дочернего класса?
[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....
}
}
Теперь я инстанцировании ChildClass2 как тип BaseClass, как показано ниже:
BaseClass baseClass = ChildClass2<string>("test1", "test2");
Как я могу бросить BaseClass типу ChildClass2 таким образом я могу получить доступ к baseClass.Property2 ?
Я пробовал что-то вроде (ChildClass2) baseClass.Property2 не работает.
'BaseClass BaseClass = ChildClass2 («test1»,«test2»);' не будет компилироваться не поставляется тип для T. –
Я думаю, что это на основе параметра типа, однако установил ее в вопрос. – Steelbird