zoukankan
html css js c++ java
利用反射动态调用类成员(泛型篇)
1
.泛型类: 通过这个类中的invokeMethod动态调用InvokeClass中的method.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
public
sealed
class
DynamicLoadMethod
<
T
>
where T :
class
{
private
static
object
obj
=
new
object
();
private
static
T invokeMethod;
public
static
T InvokeMethod
{
get
{
lock
(obj)
{
if
(invokeMethod
==
null
)
{
invokeMethod
=
typeof
(T).InvokeMember(
typeof
(T).Name, BindingFlags.CreateInstance
|
BindingFlags.Instance
|
BindingFlags.NonPublic
|
BindingFlags.Public,
null
,
null
,
null
,
null
)
as
T;
}
return
invokeMethod;
}
}
}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
2
.被动态调用的方法Class
public
class
InvokeClass
{
private
String Name;
public
String Names
{
set
{ Name
=
value; }
}
public
override
string
ToString()
{
return
Name;
}
private
Object[] values
=
new
Object[]
{
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
}
;
public
Object
this
[
int
index]
{
get
{
return
values[index];
}
set
{
values[index]
=
value;
}
}
public
Object Value
{
get
{
return
"
the value
"
;
}
}
public
InvokeClass()
{
Name
=
"
initialName
"
;
}
int
methodCalled
=
0
;
public
void
AddUp()
{
methodCalled
++
;
Console.WriteLine(
"
AddUp Called {0} times
"
, methodCalled);
}
public
void
PrintTime()
{
Console.WriteLine(DateTime.Now);
}
public
void
Swap(
ref
int
a,
ref
int
b)
{
int
x
=
a;
a
=
b;
b
=
x;
}
}
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
3
.调用方法
static
void
Main(
string
[] args)
{
Console.WriteLine(DynamicLoadMethod
<
InvokeClass
>
.InvokeMethod.Value
as
String);
DynamicLoadMethod
<
InvokeClass
>
.InvokeMethod.AddUp();
DynamicLoadMethod
<
InvokeClass
>
.InvokeMethod.Names
=
"
BrianLei Build
"
;
Console.WriteLine(DynamicLoadMethod
<
InvokeClass
>
.InvokeMethod.ToString());
}
最后的话,简单测试了一下,Loop100百万次,
直接调用方法,只花了20毫秒,
而动态调用方法的话,花了12秒
所以大家知道怎么这个思路,就可以了。
在web form 中最好不要使用。
在win form还是可以小试的。
查看全文
相关阅读:
WSDL2Java操作指南
LVM 學習筆記 转载
TAR 的使用
常用12种密码破解方法,一旦忘了密码可以补救,不要搞破坏
ADAMS软件简介
PPT演讲稿如何制作?
window sp3第三方主题使用,改变主题,任务栏不变
安装 Microsoft AppLocale 后出现的 Install Shield 安装界面乱码问题的解决办法
K700C 港行的一般的设置,包括(GPRS上网设置,彩信设置,QQ设置等等)
虚拟三维建模中的FSt格式文件介绍
原文地址:https://www.cnblogs.com/RuiLei/p/676182.html
最新文章
单元测试培训系列:(二)单元测试与Visual Studio
结合测试驱动TDD实施单元测试UnitTest
架构评审表(Architecture & Design Review Check List)
单元测试培训系列:(一)单元测试概念以及必要性
.NET Mocking Framework对比
AjaxEnabled WCF Service中如何获取到Response
My Record Series: (1.3) Windows Phone 7 Application Events
单元测试培训系列:(三)可测试性(Testability)与重构Refactoring
My Record Series: (1.1) Windows Phone 7.1 Development Environment
CentOS安装配置MySQL过程详解
热门文章
解决CentOSHTTP出现“httpd: Could not reliably determine the server's fully qualified domain name”问题
关于CentOS普通用户无法登录SSH问题
二十四节气解读
Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法(转载)
Oracle 分析函数(转载)
安装Linux是出现 Uncompressing Linux Kernel .. ok 问题处理
LVM系统学习过程 --实践操作
JDBC
VI中的替换命令和shell中的正则表达式
Axis 简单说明
Copyright © 2011-2022 走看看