public class myclass
{
public int mymember { get; set; }
}
class MySetterClass<T>
{
// obj.mymember = o for myclass
public static void SetMember(string membername, object o, ref T obj)
{
}
}
我可以使用Reflection API吗?
我有一个泛型类,我想设置一个实例的成员。
提前致谢!
答案 0 :(得分:0)
你可以,但我会警告它。你本质上是围绕类型安全系统进行最终运行,并且存在很多陷阱。
如果必须,代码是这样的,假设有问题的成员是属性而不是字段:
typeof(T).GetProperty(membername).SetValue(obj, o);
答案 1 :(得分:0)
是的,你可以。但是,如果你能在没有反射的情况下做到这一点,那将是最好的,因为反射速度慢,笨重且难以阅读,并可能表明你的设计存在缺陷。
我不得不问这个代码你的最终目标是什么?你真的想要一个基于命名该成员的字符串来设置成员的方法吗?或者您希望能够在泛型类型上设置成员,但是您知道在编译时它是什么吗?如果是后者,那么使用generic constraints就值得研究。它们允许编译器在编译时知道泛型类型的对象上的成员。