我有两个班级 ClassA 和 CLassB。ClassA 是一个抽象类。ClassB 派生自 ClassA。我有一个名为 ParentDTO 的 DTO。
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");
}
}
现在我有一个 DTO(MyDTO),它源自 ParentDTO。
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。我知道我正在做一些事情,比如将 Animal 转换为 Lion 而不是将 Lion 转换为 Animal。但是有什么方法可以使用子 DTO ID 吗?有人可以告诉我我做错了什么吗?