zoukankan      html  css  js  c++  java
  • NET 中反射的用法

    1.   反射的学习

     

    A.反射的定义

    B.反射举例

    namespace Com.Meteor.Interface
    {
        public interface IHelper
        {
            void Query();
        }
    }
    
    
    namespace Com.Meteor.Dal
    {
        public class SqlserverHelper : IHelper
        {
            public SqlserverHelper()
            {
                Console.WriteLine("这里开始构造SqlserverHelper");
            } 
            public void Query()
            {
                Console.WriteLine("SqlserverHelper Query");
            }
        }
    }
    
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Reflection;
    using Com.Meteor.Interface;
    using System.Configuration;
    
    namespace MyReflection
    {
        /// <summary>
        /// metadata元数据
        /// </summary>
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("欢迎大家来流星小子博客,学习反射技术");
    
               // SqlserverHelper sqlserverHelper = new SqlserverHelper();
               // sqlserverHelper.Query();
                Console.WriteLine("-----------Module--------------");
                Assembly assembly = Assembly.Load("Com.Meteor.Dal");
                Module[] modules = assembly.GetModules();
                foreach (var module in modules)
                {
                    Console.WriteLine(module.Name);
                }
                Console.WriteLine("-----------Type--------------");
                Type[] types = assembly.GetTypes();
                foreach (var type in types)
                {
                    Console.WriteLine(type.Name);
                }
    
                Type typeHelper = assembly.GetType("Com.Meteor.Dal.SqlserverHelper");
                Object oHelper = Activator.CreateInstance(typeHelper);
                IHelper iHelper = (IHelper)oHelper; //这句有性能损失,使用了强制类型转换
                iHelper.Query();
            Console.Read(); } } }

     C.注意事项

    1.需要把生成的dll放在主程序bindebug目录

    如图所示

    2.注意 工程添加接口引用 

  • 相关阅读:
    boost::asio发送与传输相关的几个函数,备忘
    当ASIO::ASYNC_READ与SOCKET的ASYNC_READ_SOME的区别
    boost::asio keepalive
    boost asio ——深入框架
    Boost.Asio和ACE之间关于Socket编程的比较
    OCP-1Z0-052-V8.02-15题
    JavaScript对象和数组
    Oracle 11g New 使用RMAN 增强功能
    Flex中集合的类型
    Flex中基于列表的一系列MX组件及相互关系
  • 原文地址:https://www.cnblogs.com/gylhaut/p/5777966.html
Copyright © 2011-2022 走看看