public static void Convert(Hashtable argDatas, object argObject);
这个方法的功能是,以Hashtable的key为依据自动为argObject的同名属性赋值?
请问这个方法应该如何写?
这个方法的功能是,以Hashtable的key为依据自动为argObject的同名属性赋值?
请问这个方法应该如何写?
解决方案 »
- c# 有没有visual assist x 插件
- 怎样在页面加载完毕时,将WebBrowser中页面的HTML显示在RichTextBox里面?
- 擂台:改进 String.CompareOrdinal 性能
- 在第一次运行程序时,执行注册dll命令,要怎样写啊 ?
- 各位大哥远程连接Oracle,怎样写连接字符串?
- 交流一下大家在csdn的升级时间?
- 窗体传参
- 为什么数据库成功还原后在前台就不能进行其它操作了?
- C#程序 开机自动启动,每天中午12点定时运行。帮忙写个定时运行的代码吧,谢谢啦!
- 如何从Access本地数据库绑定返回的结果集(我给100分)
- 如何将word文件批量转化成文本文件?
- 高分求救!摄象头捕获到的视频帧如何用DrawDibDraw显示?
{
Type type = argObject.GetType();
object obj = type.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
foreach(string keyName in argDatas.Keys)
{
type.InvokeMember(keyName, BindingFlags.SetProperty, null, obj, new object[] {argDatas[keyName]});
}
}
PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(type);
object obj = type.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);
foreach(string keyName in argDatas.Keys)
{
FieldInfo myFieldInfo = type.GetField("_" + keyName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Instance);
object ctr = myFieldInfo.GetValue(argObject);
PropertyDescriptor myProperty = properties.Find(keyName, true);
myProperty.SetValue(ctr, argDatas[keyName]); /*
try
{
type.InvokeMember(keyName, BindingFlags.SetProperty, null, obj, new object[] {argDatas[keyName]});
}
catch {
throw new Exception(keyName);
throw new Exception((argDatas[keyName]).GetType().ToString());
}*/
}
{
Type t = argObject.GetType(); foreach (DictionaryEntry argData in argDatas)
{
string propName = (string)argData.Key; PropertyInfo prop = t.GetProperty(propName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); prop.SetValue(argObject, argData.Value, null);
}
}
比如Button类的一个例子static void Main(string[] args)
{
Button b = new Button(); Hashtable ht = new Hashtable(); ht.Add("Name", "myButton");
ht.Add("Text", "Hello");
ht.Add("Size", new Size(10, 10));
ht.Add("Location", new Point(1, 1)); Convert(ht, b); //这就是那个方法!
}
{
Type t = argObject.GetType();
foreach (object key in argDatas.Keys)
{
System.Reflection.PropertyInfo pinfo = t.GetProperty(key.ToString(), BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if(pinfo != null)
pinfo.SetValue(argObject,argDatas[key],null);
}
}