将通过反射获得的派生列表转换为其基类列表

时间:2014-11-14 01:11:09

标签: c# .net reflection system.reflection

我该怎么办?或者有更好的方法我应该这样做吗?

也许更具体的想象方式是,我希望有一个接受哺乳动物列表的UI页面,然后通过反射获取该Mammal派生类的公共属性来获取/设置值。

列表成员保证全部属于同一类型。我想我可以将它转换为DataTable或其他东西,但我在这里使用现有的类集。 这些强类型列表已经来自已建立的类,所以我无法使用List<哺乳动物>在他们的起源。 我是以编程方式从对象属性生成UI表单。我不想制作一个MonkeyForm,DogForm,GiraffeForm,CowForm。我只是想制作一个MammalForm并将其传递给任何列表。

class Monkey : Mammal {};
class Dog : Mammal {};

class Cage
{
    [AnimalCollection(true)]
    List<Monkey> Monkeys;
};

class Kennel
{
    [AnimalCollection(true)]
    List<Dog> Dogs;
};

System.Reflection.PropertyInfo prop = myCageInstance.GetAnimalCollectionViaAttribute();
// We have the PropertyInfo now of our List<Monkey>.
// Convert it to List<Mammal> so we can pass it to our UI page

0 个答案:

没有答案