复习7、8、9

1、匿名方法:MyDelegate md=delegate(){"一个方法"};使用Delegate的时候很多时候没有必要使用一个普通的方法,因为这个方法只有这个Delegate会用,并且只用一次,这时候使用匿名方法最合适。匿名方法就是没有名字的方法。
  
2、lambda其实就是一个匿名函数而已,编译的时候会将lambda表达式,编译成一个C#匿名方法。但是使用lambda表达式会在很多时候减少代码量。

3、委托,其实就是一个类把方法包装了一下,委托都是继承自System.MulticastDelegate,而System.MulticastDelegate又继承自System.Delegate。多播委托就是一个委托数组。

4、调用Assembly的GetExportedTypes方法可以得到Assembly中定义的所有的public类型。调用Assembly的GetTypes()方法可以得到Assembly中定义的所有类型。调用Assembly中的GetType(name)方法可以得到Assembly中的定义全名为name的类型信息。
             //Type t = typeof(Person);
            类的全名称
            //Console.WriteLine(t.FullName);
            类所在的程序集的全名称
            //Console.WriteLine(t.Assembly.FullName);

获取程序集中所有公共的类型
            //Type[] types = ass.GetExportedTypes();
            //foreach (Type type in types)
            //{
            //    Console.WriteLine(type.Name);
            //}
            获取程序集中所有的类型
            //Type[] tys =  ass.GetTypes();
            //foreach (Type item in tys)
            //{
            //    Console.WriteLine(item.Name);
            //}
            根据名称获得一个类型
            //Type tPerson = ass.GetType("抽象类.Circle");
            //Console.WriteLine(tPerson.Name);

5、Activator.CreateInstance(Type t)会动态调用类的无参构造函数创建一个对象,返回值就是创建的对象,如果类没有无参构造函数就会报错。
GetConstructor(参数列表);//这个是找到带参数的构造函数。
Type类的方法:在编写调用插件的程序时,需要做一系列验证。
bool IsAssignableFrom(Type c):(直译:是否可以从c赋值)判断当前的类型的变量是不是可以接受c类型变量的赋值。
typeof(IPlugin).IsAssignableFrom(t)
bool IsInstanceOfType(object o):判断对象o是否是当前类的实例(当前类可以是o的类、父类、接口)
bool IsSubclassOf(Type c):判断当前类是否是类c的子类。类的事,没有接口的事。实现接口。
IsAbstract,判断是否为抽象的,含接口;IsAbstract: 这里的抽象的定义可以理解为不能实例化,接口,静态类,抽象类都不为抽象的。

6、获得当前应用程序运行根目录string path = AppDomain.CurrentDomain.BaseDirectory
Assembly.GetExecutingAssembly().Location
插件目录path = Path.Combine(path,”plugin”);
获得插件目录下所有插件Directory.GetFiles(path,“*.dll”)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值