方法参数为接口类型的

fenglm999 2009-05-18 01:04:00
使用反射调用dll中的某个方法的时候,当遇到方法的参数为接口类型的参数的时候,如何找到实现这个接口的类?如何去创建这个参数?
...全文
207 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fenglm999 2009-05-18
  • 打赏
  • 举报
回复
ok 谢谢了
yedaoq 2009-05-18
  • 打赏
  • 举报
回复
如果某模块定义一个接口类型,那它自然也应该定义并公开创建接口实例的逻辑和方法,比如工厂
Fibona 2009-05-18
  • 打赏
  • 举报
回复
如果你有上面的一个配置文件,能够找到程序集名称,类名,

参考最常用的反射,如:
 public static object LocateObject(string path,string className)
{
return Assembly.Load(path).CreateInstance(className);
}
这样就可以很容易的得到接口的实现了
Fibona 2009-05-18
  • 打赏
  • 举报
回复
配置文件不是指web.config这个配置文件,

我说的配置文件是指的你的接口列表对应的实现类的配置文件如
<interface>
<name>IUserDAL</name>
<modulePath>SqlServerDAL</modulePath> //所在的程序集名称
<ClassName>SqlServerDAL.UserDALSqlserverDAL</ClassName> //实现类的全称
</interface>

这样你读取到对应的接口,IUserDAL,就可以根据所在程序集名称SqlServerDAL.,类名,SqlServerDAL.UserDALSqlserverDAL,不就可以直接反射,创建一个接口的实现了

反射的代码,我想你应该会吧
Dobzhansky 2009-05-18
  • 打赏
  • 举报
回复
你自己实现一个给他也行
fenglm999 2009-05-18
  • 打赏
  • 举报
回复
你的意思是说在配置文件中,配置实现接口类的dll路径,然后利用循环找出实现的类?
Fibona 2009-05-18
  • 打赏
  • 举报
回复
自己写一个配置文件,根据配置文件中对应的dll,路径,去反射对应的接口实现就行了,一个个循环,要是不在同一个dll中还麻烦呢
fenglm999 2009-05-18
  • 打赏
  • 举报
回复
这个方法可以试试,不过有没有更好一些的办法呢
zgke 2009-05-18
  • 打赏
  • 举报
回复
.....获取所有类...看看谁继承了这个接口..
fenglm999 2009-05-18
  • 打赏
  • 举报
回复
哪位大侠指教一下,谢谢了

110,536

社区成员

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

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

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