让我们说我有两节课:
public class IntKeyObject{
public int Id {get;set;}
[ForeignKey]
public int ForeignKey {get;set;}
public string SomeProperty {get;set;}
...
}
public class StringKeyObject{
public string Id {get;set;}
[ForeignKey]
public string ForeignKey {get;set;}
public string SomeOtherProperty {get;set;}
}
我希望能够制作一个这样的容器类:
public class ObjectViewModel<T>{
public [the type of the objects key] ForeignKey {get;set;}
public IEnumerable<T> MyList {get;set;}
}
我将其初始化如下:
new ObjectViewModel<IntKeyObject>();
是否可以在对象类型上使用反射来设置我的ForeignKey属性类型? 现在,我知道如何做的唯一方法是通过显式传递Key类型,如下所示:
new ObjectViewModel<IntKeyObject, int>();
new ObjectViewModel<StringKeyObject, string>();
我希望通过推理来设置该类型。我知道如何通过获取属性从类中找到正确的属性类型,我不确定如何设置容器类。
答案 0 :(得分:2)
需要在编译时知道属性的类型。
public [the type of the objects key] ForeignKey {get;set;}
无法在编译时设置[the type of the objects key]
。
但是,您可以选择以下选项:
ObjectViewModel
对象使用字符串-将int键字符串化