使用了dotfuscator混淆其,又使用了动态实力化对象,遇到了bug!

WNASP 2007-09-04 02:07:21
一切都是按照微软的说明来实现,利用接口,然后排除它的所有的实现类,还是抱Activator.CreateInstance(type); 有错误,头都大了
我用的 dotfuscator是4.0版本的,做的Pocketpc开发,其他的没有试
以下是微软的说明
===========================================================================

在 .NET 结构中,反射和动态类加载是功能极其强大的工具。此级别的运行时程序自定义会使 Dotfuscator 无法绝对无误地确定重命名加载到给定程序中的所有类型是否安全。

请看以下 (C#) 代码片段:

public object GetNewType() {
Type type = Type.GetType( GetUserInputString(), true );
object newInstance = Activator.CreateInstance( type );
return newInstance;
}
此代码按名称加载类型,并动态地对其进行实例化。另外,该名称来自用户输入的字符串!(或者,来自运行时数据库或另一个程序等。)

显然,Dotfuscator 无法预知用户会输入哪些类型名称。解决办法是将所有潜在可加载类型的名称排除在外(请注意,仍然可以执行方法和字段的重命名操作)。正是在这种情况下,手动用户配置(以及有关要使用 Dotfuscator 处理的应用程序的某些知识)可以起到重要作用。

通常,情况不太严重。请看一个微小的变化情况:

public MyInterface GetNewType() {
Type type = Type.GetType( GetUserInputString(), true );
object newInstance = Activator.CreateInstance( type );
return newInstance as MyInterface;
}
现在,可以立即清楚地看出,只有这些类型的一个子集需要排除:即那些实现 MyInterface 的类型。
...全文
193 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gavinhuanghsc 2007-09-11
  • 打赏
  • 举报
回复
是不是你得到的那个类不能实例化,比如说抽象类,静态类
WNASP 2007-09-11
  • 打赏
  • 举报
回复
报:不能实例化
danjiewu 2007-09-07
  • 打赏
  • 举报
回复
报什么异常呢?
danjiewu 2007-09-06
  • 打赏
  • 举报
回复
Type type = Type.GetType( GetUserInputString(), true );
你想要的Type是什么?你的GetUserInputString()是什么?混淆了就不要想根据类型名得到类型了。
stcrane 2007-09-06
  • 打赏
  • 举报
回复
UP
WNASP 2007-09-06
  • 打赏
  • 举报
回复
GetUserInputString()应该是一个获取类型名称的一个方法,我都把它排除了,可还是有问题
还是说CreateInstance()获取实例的的时候有问题
WNASP 2007-09-05
  • 打赏
  • 举报
回复
up
WNASP 2007-09-04
  • 打赏
  • 举报
回复
up
WNASP 2007-09-04
  • 打赏
  • 举报
回复
我甚至把所有的东西内容都排除了,也不行,
刚刚在有做了一个非PPC(电脑上的)可执行程序,也是不行!
这鬼东西真讨厌
wuyi8808 2007-09-04
  • 打赏
  • 举报
回复
没用过dotfuscator
WNASP 2007-09-04
  • 打赏
  • 举报
回复
俺自己SF

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧