
C#,我怎样根据名称实现下面的操作? 比如 void A (string name, object obj) { obj.name.xxx = ???; }
展开全部
[STAThread]
public static void Main(string[] args)
{
var a = new A();
a.YYY = "aaaaaa";
a.B = new B();
a.B.XXX = "bbbbbb";
SetValue(a, "B.XXX", "xxxxxx");
Debug.Assert(a.B.XXX == "xxxxxx");
SetValue(a, "YYY", "yyyyyy");
Debug.Assert(a.YYY == "yyyyyy");
}
private static void SetValue(object obj, string path, object value)
{
var names = path.Split('.');
Debug.Assert(names.Length > 0);
PropertyInfo propertyInfo;
for (var i = 0; i < names.Length - 1; i++)
{
propertyInfo = obj.GetType().GetProperty(names[i]);
Debug.Assert(propertyInfo != null);
obj = propertyInfo.GetValue(obj);
Debug.Assert(obj != null);
}
propertyInfo = obj.GetType().GetProperty(names[names.Length - 1]);
Debug.Assert(propertyInfo != null);
propertyInfo.SetValue(obj, value);
}
private class A
{
public B B { get; set; }
public string YYY { get; set; }
}
private class B
{
public string XXX { get; set; }
}
展开全部
百度一下:C# 反射
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
啥?你自己都写出来了。还问什么。
追问
问题这个name是字符串;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没太明白你的问题 大概是跟C#的泛型有关??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询