呵呵。
解决方案 »
- 求帮忙
- udp操作时断开网络导致系统故障
- C#的WinForm程序的窗体时怎样实现验证的?
- 为什么SendMessage(hWndControl, BM_SETCHECK, 1, 0)和SendMessage(hWndControl, BM_GETCHECK, 0, 0)无效
- 获取ListView滚动条事件,另外看看ListView的Bug!
- WinIO模拟鼠标事件 总是不成功 附源码
- 怎么样在.aspx中写浮点验证函数,不用验证控件。
- [求教] C# 各个版本的新特性
- 各位高手路过来帮下忙号码,好吗?拜托大家拉!
- 怎么实现点窗口右上角的关闭按钮让窗口最小化或者到右下角的图标中去?
- 有谁精通CompileAssemblyFromSource的使用的阿?帮忙解答一下吧
- web Service中添加一个Web.Config
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
优惠接单开发,组件控件定制开发,成品源代码批发
联系方式:Q64180940 全天在线
==================================================================
object objValue = Activator.CreateInstance(t);Console.WriteLine(objValue);
Console.WriteLine(objValue.GetType().FullName);
下面例子中, ChangeValue类的myValue本是私有字段,
一般情况下在类外部是不能改它的值的, 但利用反射就能改了
-----------------------------------------------------
using System;
using System.Reflection;class ChangeValue
{
private string myValue;
public ChangeValue(string str)
{
myValue = str;
}
public void WriteLine()
{
Console.WriteLine("MyValue is: " + myValue);
}
}
class Test
{
public static void Main(string[] args)
{
ChangeValue cv = new ChangeValue("old value");
cv.WriteLine(); Type t = cv.GetType();
FieldInfo field = t.GetField("myValue",
BindingFlags.NonPublic |BindingFlags.Instance);
field.SetValue(cv, "new value"); cv.WriteLine();
}
}
----------------------------------------------------
再打个比方, 你要写一个播放器, 要支持如mp3, wmv, avi...等格式,
你还希望用户能自己安装一个新的格式, 也就是我们常说的插件.
在实现这些, 可能你要将每种格式都写成单个的解码程序集, 如
mp3.dll, wmv.dll, avi.dll....
这样当播放时, 根据扩展名去动态调用相应的解码程序集, 那么这时你就得
用反射去动态加载这些dll了.如: Assembly.LoadFile ("...avi.dll")
然后通过反射可以用avi.dll里面定义的类了
BindingFlags.NonPublic |BindingFlags.Instance);谁能解释一下?不公开的数据字段?或???