C#動態創建單例類的對象

来源:https://www.cnblogs.com/gispathfinder/archive/2019/09/23/11572024.html
-Advertisement-
Play Games

單例類public class SnappingClass : ISnappingEnvironment, IExtension { // private static readonly SnappingClass instance = null; static SnappingClass() { ... ...


單例類

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));
            }
        }

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 場景 Winform中實現讀取xml配置文件並動態配置ZedGraph的RadioGroup的選項: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100540708 在上面實現了將RadioGroup的選項根據配置文件動態配置後 ...
  • 今天,他來了(weboffice線上編輯文檔)。 上次寫了一個線上預覽的博,當然,效果並不是太理想,但是緊急解決了當時的問題。 後來,小編重新查找資料,求助大牛,終於使用新的方式替換了之前的low方法。 有兩種比較好的方法,一種是webOffice,一種是pageoffice,前者免費,後者付費。果 ...
  • RSA生成公鑰和私鑰對 1 /// <summary> 2 /// RSA生成公鑰和私鑰 3 /// </summary> 4 /// <returns></returns> 5 public static string[] GenerateKeys() 6 { 7 try 8 { 9 string ...
  • 通過上一篇(abp(net core)+easyui+efcore實現倉儲管理系統——EasyUI前端頁面框架 (十八) )文章,我們已經將EasyUI添加到我們的項目中了。下麵我們通過EasyUI做為前端頁面的UI控制項來展現一個貨物信息管理的前端功能,並使用創建相應的實體類,服務類等來實現後臺功能... ...
  • 原文地址: https://blog.csdn.net/chadcao/article/details/7859394 ASP.NET的安全認證,共有“Windows”、“Form”、“Passport”、“None”四種驗證模式。下麵來說說From認證,內容分三部分: 第一部分—— 怎樣實現Fro ...
  • 場景 Winform中實現讀取xml配置文件並動態配置ZedGraph的RadioGroup的選項: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100540708 在上面實現了將RadioGroup的選項根據配置文件動態配置後 ...
  • 期待已久的.NET Core 3.0即將發佈! .NET Core 3.0在.NET Conf上發佈。大約還有9個多小時後,.NET Conf開始啟動。 為期3天的大概日程安排如下: 第1天-9月23日 9:00-10:00 Microsoft Studios播出的主題演講10:00-17:00從M ...
  • 前提 入行已經7,8年了,一直想做一套漂亮點的自定義控制項,於是就有了本系列文章。 GitHub:https://github.com/kwwwvagaa/NetWinformControl 碼雲:https://gitee.com/kwwwvagaa/net_winform_custom_contr ...
一周排行
    -Advertisement-
    Play Games
  • Timer是什麼 Timer 是一種用於創建定期粒度行為的機制。 與標準的 .NET System.Threading.Timer 類相似,Orleans 的 Timer 允許在一段時間後執行特定的操作,或者在特定的時間間隔內重覆執行操作。 它在分散式系統中具有重要作用,特別是在處理需要周期性執行的 ...
  • 前言 相信很多做WPF開發的小伙伴都遇到過表格類的需求,雖然現有的Grid控制項也能實現,但是使用起來的體驗感並不好,比如要實現一個Excel中的表格效果,估計你能想到的第一個方法就是套Border控制項,用這種方法你需要控制每個Border的邊框,並且在一堆Bordr中找到Grid.Row,Grid. ...
  • .NET C#程式啟動閃退,目錄導致的問題 這是第2次踩這個坑了,很小的編程細節,容易忽略,所以寫個博客,分享給大家。 1.第一次坑:是windows 系統把程式運行成服務,找不到配置文件,原因是以服務運行它的工作目錄是在C:\Windows\System32 2.本次坑:WPF桌面程式通過註冊表設 ...
  • 在分散式系統中,數據的持久化是至關重要的一環。 Orleans 7 引入了強大的持久化功能,使得在分散式環境下管理數據變得更加輕鬆和可靠。 本文將介紹什麼是 Orleans 7 的持久化,如何設置它以及相應的代碼示例。 什麼是 Orleans 7 的持久化? Orleans 7 的持久化是指將 Or ...
  • 前言 .NET Feature Management 是一個用於管理應用程式功能的庫,它可以幫助開發人員在應用程式中輕鬆地添加、移除和管理功能。使用 Feature Management,開發人員可以根據不同用戶、環境或其他條件來動態地控制應用程式中的功能。這使得開發人員可以更靈活地管理應用程式的功 ...
  • 在 WPF 應用程式中,拖放操作是實現用戶交互的重要組成部分。通過拖放操作,用戶可以輕鬆地將數據從一個位置移動到另一個位置,或者將控制項從一個容器移動到另一個容器。然而,WPF 中預設的拖放操作可能並不是那麼好用。為瞭解決這個問題,我們可以自定義一個 Panel 來實現更簡單的拖拽操作。 自定義 Pa ...
  • 在實際使用中,由於涉及到不同編程語言之間互相調用,導致C++ 中的OpenCV與C#中的OpenCvSharp 圖像數據在不同編程語言之間難以有效傳遞。在本文中我們將結合OpenCvSharp源碼實現原理,探究兩種數據之間的通信方式。 ...
  • 一、前言 這是一篇搭建許可權管理系統的系列文章。 隨著網路的發展,信息安全對應任何企業來說都越發的重要,而本系列文章將和大家一起一步一步搭建一個全新的許可權管理系統。 說明:由於搭建一個全新的項目過於繁瑣,所有作者將挑選核心代碼和核心思路進行分享。 二、技術選擇 三、開始設計 1、自主搭建vue前端和. ...
  • Csharper中的表達式樹 這節課來瞭解一下表示式樹是什麼? 在C#中,表達式樹是一種數據結構,它可以表示一些代碼塊,如Lambda表達式或查詢表達式。表達式樹使你能夠查看和操作數據,就像你可以查看和操作代碼一樣。它們通常用於創建動態查詢和解析表達式。 一、認識表達式樹 為什麼要這樣說?它和委托有 ...
  • 在使用Django等框架來操作MySQL時,實際上底層還是通過Python來操作的,首先需要安裝一個驅動程式,在Python3中,驅動程式有多種選擇,比如有pymysql以及mysqlclient等。使用pip命令安裝mysqlclient失敗應如何解決? 安裝的python版本說明 機器同時安裝了 ...