我想在泛型类中访问我传递的动态类属性。我能怎么做?
我的班级属性在这里。
public class Test
{
[DataMember]
public string Body { get; set; }
[DataMember]
public string Header { get; set; }
}
我发送了测试' class to Class1。
public class Class1
{
public static T Fill<T>(T myClass)
{
//how can i access Test class property in here?
myClass.Header ????
return obj;
}
}
我将类传递给泛型方法如下。
var x = Class1.Fill(new Test());
请帮忙。谢谢。
答案 0 :(得分:2)
如果你确实需要动态且确定有Header
字符串属性,那么你可以这样做:
public class Class1
{
public static dynamic Fill(dynamic myClass)
{
myClass.Header = "222";
...
...
return myClass; // or whatever
}
}
但是,如果你最终得到了这个,我会建议你复习你的设计。
答案 1 :(得分:0)
如果泛型类始终从Test
派生,则可以使用类型约束来访问类的属性:
public static T Fill<T>(T myClass) where T: Test
{
myClass.Header //Will work
return obj;
}
如果类不是从测试派生的,则必须使用反射来访问该属性。使用简单的反射,您可以执行以下操作:
public static T Fill<T>(T myClass) where T: Test
{
typeof(T).GetProperty("Header").GetValue(myClass); // Get the value
return obj;
}