ClassAとCLassBの2つのクラスがあります。ClassAは抽象クラスです。ClassBはClassAから派生しています。ParentDTOという名前のDTOが1つあります。
public class ParentDTO
{
public int UserId { get; set; }
}
public abstract class ClassA
{
public abstract void CreateUser(ParentDTO dto);
}
public class ClassB : ClassA
{
public override void CreateUser(ParentDTO dto)
{
Console.WriteLine("You are in class ClassB");
}
}
これで、ParentDTOから派生した1つのDTO(MyDTO)ができました。
public class MyDTO: ParentDTO
{
public int MyID { get; set; }
}
ClassBをさらに拡張しました:
public class ClassC : ClassB
{
public override void CreateUser(ParentDTO dto)
{
var mydto = (MyDTO) dto;// This throws cast exception
mydto.MyID=222;
}
}
私は上記のコードを次のように使用しています:
ClassC c = new ClassC();
ParentDTO dto=new ParentDTO();
c.CreateUser(dto);
ClassCのCreateUserメソッドで上記のDTOをキャストする方法を教えてもらえますか?コードでmydto.MyIDを使用したい。私はLiontoAnimalではなくAnimaltoLionをキャストするようなことをしていることを知っています。しかし、子DTO IDを使用する方法はありますか?誰かが私が間違っていることを教えてもらえますか?