Performance Tuning相关的
好好学习,天天向上
博客园
社区
首页
新随笔
联系
管理
订阅
Reflection中对于out类型的获取
先看这个代码:
using
System;
namespace
AppTest
{
public
class
AppTest1
{
public
void
SetValue(
string
value1,
out
string
value2)
{
value2
=
"
hello
"
;
}
public
void
SetValue(
string
value1)
{
}
}
}
我的目的,是通过反射,得到SetValue带有两个参数的这个MethodInfo。一般的,我们会调用包含GetMethod中第5个或者第6个重载的方法,即,包含ParameterModifier的那个方法。但是不知道为什么,返回的MethodInfo总是null。后来google了一下GetMethod ParameterModifier,到.net247上找到了一个答案。代码修改为这样,可以了:
Assembly asm
=
Assembly.LoadFrom(
@"
D:\Programs\vs.net\SerialGen\Test\bin\Debug\test.dll
"
);
Type t
=
asm.GetType(
"
AppTest.AppTest1
"
);
//
这段定义是下面第一个GetMethod使用的
ParameterModifier[] pm
=
new
ParameterModifier[
2
];
pm[
0
]
=
new
ParameterModifier(
1
);
pm[
0
][
0
]
=
false
;
pm[
1
]
=
new
ParameterModifier(
1
);
pm[
1
][
0
]
=
true
;
//
这行,返回的mi是null
MethodInfo mi
=
t.GetMethod(
"
SetValue
"
,BindingFlags.DeclaredOnly,
null
,
new
Type[]
{
typeof
(
string
),
typeof
(
string
)}
,pm);
//
这行,返回的是正确的
MethodInfo mi2
=
t.GetMethod(
"
SetValue
"
,
new
Type[]
{
typeof
(
string
),Type.GetType(
"
System.String&
"
)}
);
第二个GetMethod中的TypeList,直接写成了System.String&就可以了。
第一种方式,为什么不可以?对于上面的pm的赋值,也这样写过:
ParameterModifier[] pm
=
new
ParameterModifier[
1
];
pm[
0
]
=
new
ParameterModifier(
2
);
pm[
0
][
0
]
=
false
;
pm[
0
][
1
]
=
true
;
不过,也不正确。
,不知道,这玩艺到底怎么用啊?
绿色通道:
好文要顶
关注我
收藏该文
与我联系
posted @ 2004-10-11 14:04
鞠强
阅读(1423)
评论(1)
编辑
收藏
发表评论
2029358
回复
引用
查看
#1楼
2011-02-19 13:34
|
只是找工的
t.InvokeMember("SetValue",Binding.InvokeMember,null,t,new object[]{});
试试这方法,看看可以吗?
注册用户登录后才能发表评论,请
登录
或
注册
,
返回博客园首页
。
首页
博问
闪存
新闻
园子
招聘
知识库
最新IT新闻
:
·
ASP.NET MVC 4 浮出水面
·
苹果或更换iOS设备接口 新接口更小更省空间
·
阿里巴巴B2B股权持有人行使1.2万股购股权
·
高通与印度政府和解将获印度宽带服务牌照
·
制造一部 iPhone 的人力物力
»
更多新闻...
最新知识库文章
:
·
领域模型管理与AOP
·
编程的艺术:漂亮的代码和漂亮的软件
·
GIT分支管理是一门艺术
·
编程:是一门艺术
·
编程是一门艺术吗?
»
更多知识库文章...
China-pub 2011秋季教材巡展
China-Pub 计算机绝版图书按需印刷服务
随笔分类
.NET(82)
(rss)
Basic Debug(12)
(rss)
iPAD game(1)
(rss)
SQL Server(4)
(rss)
Tess的Lab分析(8)
(rss)
Troubleshooting(3)
(rss)
随笔档案
2011年3月 (1)
2011年2月 (1)
2010年8月 (1)
2010年6月 (9)
2010年3月 (1)
2009年11月 (1)
2009年8月 (1)
2009年4月 (2)
2008年12月 (1)
2008年9月 (1)
2008年5月 (1)
2008年4月 (1)
2008年3月 (7)
2008年2月 (2)
2008年1月 (9)
2007年12月 (1)
2007年11月 (5)
2007年10月 (3)
2007年4月 (1)
2006年1月 (2)
2005年12月 (1)
2005年10月 (1)
2005年9月 (1)
2005年8月 (5)
2005年7月 (2)
2005年4月 (5)
2005年3月 (3)
2004年12月 (1)
2004年11月 (4)
2004年10月 (4)
2004年9月 (7)
2004年8月 (6)
2004年7月 (13)
2004年6月 (4)
2004年5月 (2)
2004年4月 (34)
积分与排名
积分 -
排名 -
hello
world