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();
                }
            }
        }
    }
  • 相关阅读:
    LightOj 1027 A Dangerous Maze
    hdu 4738 Caocao's Bridges(割边)
    数论模板
    Codeforces Round #316 (Div. 2) D. Tree Requests(dsu)
    Educational Codeforces Round 2 E. Lomsat gelral(dsu)
    qa问答机器人pysparnn问题的召回
    pysparnn 模块使用,相似句子召回
    pytorch seq2seq闲聊机器人beam search返回结果
    pytorch seq2seq闲聊机器人加入attention机制
    python 中自带的堆模块heapq
  • 原文地址:https://www.cnblogs.com/sixiangqimeng/p/3569320.html
Copyright © 2011-2022 走看看