C# 接口 反射 奇怪的问题

问题描述

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,这是为什么?

解决方案

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

解决方案二:

但是我在控制台应用程序中这样做是可以的啊?

解决方案三:

用 if ( obj is IUserFuns ) 试试看。

时间: 2024-09-08 11:26:43

C# 接口 反射 奇怪的问题的相关文章

前端-求帮忙,下图的样子怎么做,我做的要么居中不了,要么按键跟那个文本不在同一行。

问题描述 求帮忙,下图的样子怎么做,我做的要么居中不了,要么按键跟那个文本不在同一行. 解决方案 <div style="width:200px; text-align:center; background:#09F; position:relative;"> <a style="position:absolute; left:0;" href="#">链接</a>文本 </div> 解决方案二:

谈谈Go语言的反射三定律_Golang

简介 Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型.它是元编程的一种形式,也是最容易让人迷惑的一部分. 虽然Go语言没有继承的概念,但为了便于理解,如果一个struct A 实现了 interface B的所有方法时,我们称之为"继承". 类型和接口 反射建立在类型系统之上,因此我们从类型基础知识说起. Go是静态类型语言.每个变量都有且只有一个静态类型,在编译时就已经确定.比如 int.float32.*MyType.[]byte. 如果我们做出

c#中的反射

目录 反射的概述 反射appDomain 的程序集 反射单个程序集 利用反射获取类型信息 设置反射类型的成员 通过反射创建类型的实例 反射类型的接口 反射的性能 反射的概述 反射的定义:审查元数据并收集关于它的类型信息的能力.元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等,.System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码 和反射相关的命名空间(我们就是通过这几个命

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦(转good)

依赖注入(DI)有助于应用对象之间的解耦,而面向切面编程(AOP)有助于横切关注点与所影响的对象之间的解耦.所谓横切关注点,即影响应用多处的功能,这些功能各个应用模块都需要,但又不是其主要关注点,常见的横切关注点有日志.事务和安全等. 将横切关注点抽离形成独立的类,即形成了切面.切面主要由切点和通知构成,通知定义了切面是什么,以及何时执行何种操作:切点定义了在何处执行通知定义的操作. http://ju.outofmemory.cn/entry/216839 引子: AOP(面向方面编程:Asp

java中动态代理实现机制

v前言: 代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务.  vJAVA各种动态代理实现的比较 v接口 interface AddInterface{ int add(int a, int b); } interface Su

2015年末必备前端工具集

本文讲的是2015年末必备前端工具集, "Javascript没法胜任大型应用,因为它甚至不能确定一个变量的类型,而且很难重构"~一大堆困惑的人 当我初识Javascript的时候,只有一种浏览器需要关心:NetScape.它在微软开始捆绑销售IE和操作系统之前完全统治了世界.在那些日子里,Javascript的开发者工具很弱这种观点的确是对的. 不过这个观点已经被推翻很久了,今天,Javascript已经拥有了在我见过的所有语言中最好的开发工具生态系统. 请注意,我没有说"

请问策略模式和工厂模式的区别

问题描述 工厂模式抽象出共同的方法,继承接口,反射出对象,执行方法策略模式,抽象出共同的方法,继承接口,context传递继承的类,调用继承类的方法怎么感觉好像啊?为什么会区分成2种设计模式?应用场景的区别是什么? 解决方案 解决方案二:楼主在哪里知道的这些名词?这些名词能帮你解决什么问题?解决方案三:工厂解决的是创建的过程策略解决的是动作更具体的说,工厂是要解决如何创建某个对象,重点在于对象,而策略不关心你对象是怎么创建的,它只关心你传入的对象,它需要用这个对象来解决问题,重点在于解决所以你完

详解java中动态代理实现机制_java

代理模式是常用的java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转发给委托类,以及事后处理消息等.代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务. JAVA各种动态代理实现的比较 接口 interface AddInterface{ int add(int a, int b); } interface SubInterfa

struts2自定义MVC框架_java

本文实例为大家分享了struts2自定义MVC框架的方法,供大家参考,具体内容如下 自定义MVC: (首先了解Model1和Model2的概念) Model1与Model2: Model1:就是一种纯jsp开发技术,将业务逻辑代码和视图渲染代码杂糅在一起. Model2:Model2是在Model1的基础上,将业务逻辑的代码分离开来,单独形成一个Servlet,Model2也是基于MVC开发. 总结MVC特点如下: (1)数据的获取和显示分离 (2)控制器将不同的模型和视图组合在一起 (3)应用