下面是我的程序代码:using System;
using System.Reflection;
using UNGou.ERP.Model;
namespace ConsoleApplication9
{
class OrderInfo
{
private string _AddName;
public string AddName
{
get { return _AddName; }
set { _AddName = value; }
}
} class Class1
{
[STAThread]
static void Main(string[] args)
{
OrderInfo oi = new OrderInfo();
oi.AddName = "某甲"; test(oi);
System.Console.WriteLine("添加者为:" + oi.AddName);
}
public static void test(object obj)
{
Type type = obj.GetType();
object objs = type.InvokeMember(null, BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); type.InvokeMember("AddName", BindingFlags.SetProperty | BindingFlags.Instance, null, objs, new string[] { "某乙" });
//type.InvokeMember("Addname", BindingFlags.SetProperty | BindingFlags.Instance|BindingFlags.IgnoreCase, null, objs, new string[] { "某乙" });
//type.InvokeMember("Addname", BindingFlags.SetField | BindingFlags.Instance | BindingFlags.IgnoreCase, null, objs, new string[] { "某乙" });
} }
}我要求达到的功能是:通过反射,设置oi对象的AddName属性(无启用忽略大小写标志也没有用)为"某乙",程序运行时,总是出现"未找到方法,或者是未找到字段",大侠帮忙下.
using System.Reflection;
using UNGou.ERP.Model;
namespace ConsoleApplication9
{
class OrderInfo
{
private string _AddName;
public string AddName
{
get { return _AddName; }
set { _AddName = value; }
}
} class Class1
{
[STAThread]
static void Main(string[] args)
{
OrderInfo oi = new OrderInfo();
oi.AddName = "某甲"; test(oi);
System.Console.WriteLine("添加者为:" + oi.AddName);
}
public static void test(object obj)
{
Type type = obj.GetType();
object objs = type.InvokeMember(null, BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); type.InvokeMember("AddName", BindingFlags.SetProperty | BindingFlags.Instance, null, objs, new string[] { "某乙" });
//type.InvokeMember("Addname", BindingFlags.SetProperty | BindingFlags.Instance|BindingFlags.IgnoreCase, null, objs, new string[] { "某乙" });
//type.InvokeMember("Addname", BindingFlags.SetField | BindingFlags.Instance | BindingFlags.IgnoreCase, null, objs, new string[] { "某乙" });
} }
}我要求达到的功能是:通过反射,设置oi对象的AddName属性(无启用忽略大小写标志也没有用)为"某乙",程序运行时,总是出现"未找到方法,或者是未找到字段",大侠帮忙下.
解决方案 »
- 关于泛型构造函数
- 【c# Winform 】如果程序报错后自动退出程序,关闭进程
- 在内存中不断的累加,用什么思路比较好呢?
- 请教Winform 的 devExpress 控件 的vGridControl 如何获取每一行以及每一个单元格内的值! 本人全部的分都在这里了,求助呀!
- 请教 哪个枚举是图片的后缀名 ?
- "对象当前正在其他地方使用":另一个线程已Invoke主窗体的方法更改其Enable属性,还是出现此异常?
- 求助
- 进销存这样的小型ERP做 成B/S还是C/S结构?请指点!!!!
- c#调用com的问题?
- 如何设置EXCEL网格的数据格式为数字、日期、货币、文本等?在线求救,满分相送
- 如何改变弹出的messageBox的弹出位置?
- like '%[2008]%'报错,说不可识别字符串,怎么解决阿
public static void test(object obj)
{
Type type = obj.GetType();
type.InvokeMember("AddName", BindingFlags.SetProperty, null, obj, new string[] { "某乙" });
}
type.InvokeMember("AddName", BindingFlags.SetProperty ¦ BindingFlags.Instance, null, obj, new string[] { "某乙" });
应该就可以了。
type.InvokeMember("addname", BindingFlags.SetProperty | BindingFlags.IgnoreCase, null, obj, new string[] { "某乙" });要如何实现.谢谢
1.获取用户的成员
2.调用成员的SetValue方法赋值
建议你访问Members
看看所有成员的列表