20080510 c# Activator.CreateInstance
http://www.shengfang.org
#region 动态加载
Type type = Type.GetType("sf.sfsf" + htheader["x-extern-sf"]);
object obj = Activator.CreateInstance(type);
object[] o ={ str, htheader };
int i = (int)type.InvokeMember("sfsfsf", BindingFlags.InvokeMethod, null, obj, o);
i = (int)type.InvokeMember("sfsfsfsf", BindingFlags.InvokeMethod, null, obj, o); //REF 参数
str=(string)o[0];
htheader=(Hashtable)o[1];
#endregion
```````````````
VS2005中,断点无效,调试运行时如图所示:
解决方法一:
工具→选项→调试→常规,将“要求源文件与原始版本完全匹配”的勾去掉即可。
解决在VS2005中“当前不会命中断点。源代码与原始版本不同”的问题[转载]
2008-04-18 10:52
今天在Visual Studio 2005中调试某个程序时遇到一个奇怪问题
就是在某个源文件中设置的断点老是无效,提示“当前不会命中断点。源代码与原始版本不同”信息
清理项目、重编项目、重新拷贝原文件都解决不了问题
“工具”,“选项”,“调试”,“要求源文件与原始版本完成匹配”去掉勾。
另外通过重新格式化出问题的源文件亦可以解决,即在VS2005中选择 “编辑”-“高级”-“设置选定内容的格式”。
在Vs2003进行程序开发时,有时候在调试时会发现设置了断点,但是没有任何作用。当鼠标放在断点上是,会提示当前不会命中断点。还没有为该文档加载任何符号。
具体什么原因造成这个错误,暂时没有弄清楚。但是解决办法是:右击“解决方案”--》“配置管理器”--》新建“活动的解决方案配置”--》在“新建解决方案配置”对话框的“解决方案配置名”中输入一个名字,其它什么都不用修改--》确定。
重新运行,设置的断点就起作用了!
还可以按以下步骤进行处理: 1.打开项目属性页,检查“配置属性”下的“生成”中的细项,其中“生成调试信息”的属性是否设置为true,如果没有,就把它设置为“true”。 2.确认完以上属性后,如果仍然出现该错误,就需要采用如下解决办法了。假设我的项目名称这VPN,这时,可以在以下路径中找到VPN.dll的文件: “C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\vpn\d3cf95ee\36ebe08d\assembly\dl2\fb705b8f\e8bed8ad_155ec601”,删除该文件后就可以正常调试了。
我在调试加入断点时,提示 当前不会命中断点。 还没有为该文档加载任何符号 ?
原因:
1.当前代码与程序dll不一致,可能需要重新编译
2.当前的dll只读
解决方法:
生成 -->配置管理器 活动的项目配置中新建以默认值设置的方案.
这时会在BIN目录下生成一个以方案名命名的目录,所有调试时用的DLL,和EXE文件,就会在目录里生成,同时,OBJ目录里,也会有这么一个目录
public class A
{
public void AMethod(ref int param)
{
param = 10;
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
A a = new A();
int param = 0;
object[] theParams = new object[]{ param };
typeof(A).InvokeMembe(
"AMethod",
System.Reflection.BindingFlags.Instance|
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.InvokeMethod,
null,
a,
theParams);
param = (int)theParams[0];
}