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,这是为什么?
C# 接口 反射 奇怪的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- threenewbee 2016-05-10 02:01关注
本来就是这样,要么放在一个项目中,要么强签名后注册到gac中。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥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系统的硬盘