有以下语句
oc.t300km.First(p => p.id == 1).spec = "3CCCC";
请问现在在仅知道oc这个对象,要用反射的方法设置spec的值应该怎么做?
oc.t300km.First(p => p.id == 1).spec = "3CCCC";
请问现在在仅知道oc这个对象,要用反射的方法设置spec的值应该怎么做?
解决方案 »
- 把字符串反射成可执行代码中,怎样在Invoke中传一个DataSet或DataTable?
- C# WinForm如何把数据库中的数据写到Combobox里?
- stringBuilder 类 来实现删除数据库任意一条记录,这个类生疏啊.....求各位大侠帮下...
- c#编写的类在编译之后,在内存中是如何表示的呢?
- 泛型错误 ——“试图加载格式不正确的程序!”
- vs2005的WebService问题
- 讨论了解程序员的待遇、工资情况
- C# 在enumjobs中获得JOB_INFO_1类型数组中的值
- C#新手问
- 求助:类似project中的不同视图的实现方法,每一个可行的方案都至少有200分。也可以提交换条件。谢谢。up,gz有分。
- datagridview值,传到另一个form
- 使用filter把背景图片拉伸后控件点击使用不了
是First(int pid)?
First的定义
public static TSource First<TSource>(
this IEnumerable<TSource> source,
Func<TSource, bool> predicate
)
与delegate (p的类型 p) { return p.id == 1;}是一样的
没你说的那么简单的。lambda表达是怎么反射?lambda表达式也没办法动态创建.
我在想能不能用
Microsoft.CSharp;
System.CodeDom.Compiler;
把lambda放这里运行..然后获取结果 再回来反射呢?
oc.t300km指的是一个列表之类的对象
oc.t300km.First(p => p.id == 1)是从列表对象中取出了符合条件的第一个
oc.t300km.First(p => p.id == 1).spec给取出来的对象的spec属性赋值
==========
现在问题是不知道你要反射到什么程度呢?
using System.Reflection;
&nb
namespace ConsoleApplication9
{
class Love
{
public int field1;
private string _name;
public Love()
{
}
public string Name
{
get
{
return _name;
}
set
{
_name=value;
}
}
public int GetInt(int a)
{
return a;
}
public void Display(string str)
{
Console.WriteLine(str);
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Love love = new Love();
Type type = love.GetType();
Object obj = type.InvokeMember(null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args);
//调用没有返回值的方法
type.InvokeMember("Display",BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance , null , obj , new object[]{"aldfjdlf"});
//调用有返回值的方法
int i = (int)type.InvokeMember("GetInt",BindingFlags.InvokeMethod | BindingFlags#0000cc">.Public | BindingFlags.Instance,null,obj,new object[]{1});
Console.WriteLine(i);
//设置属性值
type.InvokeMember("Name",BindingFlags.SetProperty,null,obj,new string[]{"abc"});
//获取属性值
string str=(string)type.InvokeMember("Name",BindingFlags.GetProperty,null,obj,null);
Console.WriteLine(str);
//设置字段值
type.InvokeMember("field1",BindingFlags.SetField,null,obj,new object[]{444});
//获取字段值
int f=(int)type.InvokeMember("field1",BindingFlags.GetField,null,obj,null);
Console.WriteLine(f);
Console.ReadLine();
}
}
}
反射程度是:
1.仅知道oc这个对象
2.另外还知道"p=>p.id==1"这个字符串,注意是字符串现在要修改spec的值