zoukankan      html  css  js  c++  java
  • C#动态创建单例类的对象

    单例类

    public class SnappingClass : ISnappingEnvironment, IExtension
        {
           
            //
            private static readonly SnappingClass instance = null;
            static SnappingClass()
            {
                instance = new SnappingClass();            
            }
    
            private SnappingClass()
            {
                
            }
    
            public static SnappingClass Instance
            {
                get
                {
                    return instance;
                }
            }


    动态创建:

    void IExtensionManagerAdmin.StartupExtensions(string componentCategory, string jitCategory, ref object initializationData)
            {
                var typeInfos = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IExtension)))).ToArray();
                foreach (var typeInfo in typeInfos)
                {
                    //Console.WriteLine(typeInfo.FullName);
                    //IExtension pExtension = typeInfo.Assembly.CreateInstance(v.FullName) as IExtension;
    
                    //MethodInfo methodInfo = typeInfo.GetMethod("Instance", BindingFlags.NonPublic | BindingFlags.Static, null, new Type[] { }, null);
                    //IExtension pExtension = methodInfo.Invoke(null, null) as IExtension;
                    //
                    PropertyInfo propertyInfo = typeInfo.GetProperty("Instance", BindingFlags.Public |  BindingFlags.NonPublic | BindingFlags.Static);
                    //
                    //PropertyInfo[] propertyInfos = typeInfo.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
                    //foreach (PropertyInfo propertyInfo in propertyInfos)
                    //{
                    //    Console.WriteLine(propertyInfo.Name);
                    //}
                    IExtension pExtension = propertyInfo.GetValue(null, null) as IExtension;
                    //
                    pExtension.Startup(ref initializationData);
                    this.pExtensionList.Add(new KeyValuePair<string, IExtension>(pExtension.Name, pExtension));
                }
            }

    -----------------------------------------------------------------------------------------

  • 相关阅读:
    Mac上安装Python3虚拟环境(VirtualEnv)教程
    django 安装验证码插件captcha
    OS path 的常见应用
    os 相对路径与绝对路径
    RecursionError: maximum recursion depth exceeded while calling a Python object
    java爬虫爬取博客园数据
    SVN
    Jwt验证
    Vuex
    SPA项目开发之CRUD+表单验证
  • 原文地址:https://www.cnblogs.com/gispathfinder/p/11572024.html
Copyright © 2011-2022 走看看