问题描述
问题可能有点长...本人是非计算机专业的菜鸟...某些问题可能也表述不清楚啊...我要做的是面向对象有限元的程序框架设计简单来说.我的毕业设计/论文要用C#实现这样一种功能我要做一个框架...基本已经做好了.做了一些简单的类(三角形四边形单元等),并且能够计算出结果...现在为了方便用用户自行设计、添加单元(就是类),并利用已有的程序框架调用这些单元我想做到的效果是...用户把自定义的类的源代码写在txt上,然后通过框架里面已有的子程序读取txt的内容并且生成相应的类。这样以后就可以随意添加单元来进行计算了。我知道可以用反射、CodeDom的方法实现根据txt上的内容生成类,我也做过简单的试验并且成功了(比如读取txt上的Console.WriteLine("HelloWorld!")并生成相关程序。)这些自定义的类需要实现原来框架里面的一些接口或者继承、使用某些类。但现在的情况是。。。编译的时候会产生错误,说框架里面的接口不可访问。。。以及利用反射实例化这些自定义类的时候不成功(总是返回null)。。。这是因为我原来的框架和动态编译的代码属于不同的程序集的原因吗?但我又看到两边的程序集的全名都是相同的。。。是不是还有什么地方要怎么搞?求大神帮助啊~~~~!
解决方案
解决方案二:
面向接口编程是不需要什么反射的。不要轻易(滥用)反射,更何况你不是专业开发,只是做一些一般工具,用面向对象系统扩展方法就是一种很正统的扩展方法,除了一两行反射代码,例如在程序启动时Activator.CreateInsatnce(...)一个对象实例,其它代码应该与反射没有半点关系。
解决方案三:
另外,假设你使用.net4.0,实际上也无需写“一两行反射代码”,集成在.netframework中的MEF就是干这个的。
解决方案四:
引用1楼的回复:
面向接口编程是不需要什么反射的。不要轻易(滥用)反射,更何况你不是专业开发,只是做一些一般工具,用面向对象系统扩展方法就是一种很正统的扩展方法,除了一两行反射代码,例如在程序启动时Activator.CreateInsatnce(...)一个对象实例,其它代码应该与反射没有半点关系。
哈哈..后来弄好了.是有个地方的命名空间弄错了.因为我想做到的效果是其他人拿着我编译好的exe文件来用.然后可以通过txt继续添加自定义单元.由于这些用户自定义单元的类名以及数量我事前都不知道.所以也不好用工厂来弄.我想到的只能是从外部获得关于这些信息的字符串.而我知道的能这么做的就只有反射啦.事实上也只是在创建那个对象实例的时候要用到反射.哈哈~还是非常感谢~~~~还想再问一下有没有其他办法可以达到这种效果?
解决方案五:
该回复于2012-04-23 08:50:03被版主删除