zoukankan      html  css  js  c++  java
  • 抽象工厂核心反射

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Reflection;
    
    namespace TestReflection
    {
        class Program
        {
            static void Main(string[] args)
            {
                IName objChineseName = AbstractFactory.createChineseName();
                objChineseName.ShowName();
    
                IName objEnglishName = AbstractFactory.createChineseName();
                objEnglishName.ShowName();
            }
        }
    
        // 声明一个接口,它有一个显示"名字"的功能(ShowName方法)
        public interface IName
        {
            void ShowName();
        }
    
        // 实现接口,显示中国名字
        public class ChineseName : IName
        {
            IName 成员
        }
    
        // 实现接口,显示中国名字
        public class EnglishName : IName
        {
            IName 成员
        }
    
        // 最为重要的代码段,往下看
        // 使用抽象工厂的方法来进行动态创建对象实例应用哦
        public sealed class AbstractFactory
        {
            public static readonly string path = "TestReflection";
    
            public static IName createChineseName()
            {
                // s 的值以后从Web.Config动态读取,如下所示
                /*    
                       
                     
                 */
                // 把className赋值为:TestReflection.ChineseName,将显示中文名
                string className = path + ".ChineseName";
                return (IName)Assembly.Load(path).CreateInstance(className);
            }
    
            public static IName createEnglishName()
            {
                string className = path + ".EnglishName";
                return (IName)Assembly.Load(path).CreateInstance(className);
            }
        }
    }

    如果你不太清楚自己的解决方案中都用到了哪些Assembly,可以使用下面的方法,如果再想得到Assembly里的信息

    namespace TestReflection
    {
        class Program
        {
            static void Main(string[] args)
            {
                // 遍历显示每个Assembly的名字
                foreach (object var in Ax)
                {
                    Console.WriteLine("Assembly的名字是:" + var.ToString());
    
                    // 使用一个已知的Assembly的名称,来创建一个Assembly
                    // 通过CodeBase属性显示最初指定的程序集的位置
                    Console.WriteLine("最初指定的程序集TestReflection的位置:" + Assembly.Load("TestReflection").CodeBase);
                    Console.ReadLine();
                }
            }
        }
    }
  • 相关阅读:
    js字符串转数组,转对象方法
    react执行yarn eject后配置antd的按需加载
    DOM对象与jquery对象区别
    vscode使用git管理代码
    使用vscode编辑器编辑CPU100%使用率问题
    Java 多态
    1,随机生成一个500m的txt,填充内容为小写的26个字母。生成后,查找abc字符,打印出其数量和位置(越快越好)
    bat 文件
    word2Html
    生成压缩文件
  • 原文地址:https://www.cnblogs.com/sixiangqimeng/p/3569320.html
Copyright © 2011-2022 走看看