• 抽象工厂核心反射


    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();
                }
            }
        }
    }
  • 相关阅读:
    nyoj 202红黑树 (搜索)
    POJ 3281 Dining(最大流)
    nyoj-488 素数环 +nyoj -32 组合数 (搜索)
    LeetCode100:Same Tree
    LeetCode283:Move Zeros
    Leetcode226:Invert Binary Tree
    LeetCode258:Add Digits
    Leetcode237:Delete Node in a Linked List
    LeetCode7:Reverse Integer
    LeetCode292:Nim Game
  • 原文地址:https://www.cnblogs.com/sixiangqimeng/p/3569320.html
Copyright © 2020-2023  润新知