【发布时间】:2015-05-19 06:58:48
【问题描述】:
假设我有以下两个类
public class Animal
{
public string name { get; set; }
}
public class Cat: Animal
{
public int age { get; set; }
public string type { get; set; }
}
现在我想通过隐式转换将我的派生类“Cat”匹配属性(例如名称)转换为我的基类“Animal”,如下所示。
Cat cat = new Cat();
cat.name = "diana";
cat.age = 2;
cat.type = "Siamese-American Shorthair";
Animal animal = new Animal();
animal = (Animal)cat;
// or
animal = cat as Animal;
因此,在进行上述编码时,它会正常工作,并且会在 Animal 类对象中隐含 name 属性,但是如果我检查 Animal 类的对象,它实际上包含 Cat 类的对象,它是 cat 而实际上没有得到对象动物类。
所以请帮助我克服这种情况,这样我就可以直接将我的子类属性隐式转换为具有正确父类对象的匹配类属性。
【问题讨论】:
-
您的代码无法编译并且它没有显示您的实际问题。顺便说一句,你不需要新的动物或演员,
Animal animal = cat;也应该可以。 -
Cat的Name属性已经来自它的父级Animal。如果您确实需要Animal类型,请创建一个Animal实例。 -
@YuvalItzchakov 你是对的,但我有我描述的场景以及我需要动物类型的任何方式。我希望有人能帮助我
-
为什么你需要一只猫才能成为动物而不是猫?这听起来像是一个不错的设计错误。
-
@HimBromBeere 你可能是对的,它可能是设计模式错误,但现在我没有任何选择来修改这个设计模式
标签: c#