chyun2011 2016-05-10 01:59 采纳率: 100%
浏览 1298
已采纳

C# 接口 反射 奇怪的问题

1、定义一个接口,用于获取用户的功能点。因为有些项目中甲方有自己的权限平台,所以这里反接口开放出来。
public interface IUserFuns
{
List GetFunCodes(string userID);
}
2。我的系统中也自己做了一套授权功能。实现1中的接口
public List GetFunCodes(string userID)
{
List modules = new List();
modules.Add("0000");
modules.Add("0001");
modules.Add("0002");
modules.Add("0003");
modules.Add("0004");
return modules;
}
} 这只是用来测试的。
3、 接口开放在配置文件里,

<!---->
4、根据配置文件的信息,获取功能点权限
//获取类信息 动态调用
Assembly asb = Assembly.LoadFile(assName);
object obj = asb.CreateInstance(section.TypeName);
if (typeof(IUserFuns).IsInstanceOfType(obj))
{
IUserFuns module = obj as IUserFuns;
listCodes = module.GetFunCodes(userID);
}
assName是实现接口的文件的全路径名称

section.TypeName是实现接口的类的全名称,命名空间命+类名
5、问题:4中的判断,if (typeof(IUserFuns).IsInstanceOfType(obj))
如果obj跟IUserFuns在同一个项目中typeof(IUserFuns).IsInstanceOfType(obj)就是false,如果obj跟IUserFuns不在同一个项目中,typeof(IUserFuns).IsInstanceOfType(obj)就是true,这是为什么?

  • 写回答

3条回答 默认 最新

  • threenewbee 2016-05-10 02:01
    关注

    本来就是这样,要么放在一个项目中,要么强签名后注册到gac中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘