C#动态创建单例类的对象
2024-09-01 23:10:04
单例类
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));
}
}
-----------------------------------------------------------------------------------------
最新文章
- LeetCode(124) Binary Tree Maximum Path Sum
- WCF在编译出现 “错误 3 命令“时解决
- oracle应该安装在什么版本的linux下
- 51NOD 算法马拉松12
- Java框架----SSH整合回顾
- HTTP协议 流程图
- sql server 2008 case when
- childNodes属性 和 nodeType属性
- 【安装Python环境】之“安装 setuptools ”时出现的问题以及解决办法
- 十条最有效的PCB设计黄金法则
- 自己动手写web框架----1
- Vue+koa2开发一款全栈小程序(7.图书录入功能)
- shell脚本中的数据传递方式
- 前端开发 - JavaScript
- BZOJ5416 NOI2018冒泡排序(动态规划+组合数学)
- 在电脑用Chrome运行安卓apk程序[ARC Welder]
- vue 之 .$mount()
- Chrome 鼠标左键-新标签打开
- How to Pronounce OF
- 集合 数组 定义 转换 遍历 Arrays API MD
热门文章
- LabVIEW工控二进制数据存储
- Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之三 || Swagger的使用 3.1
- Flask笔记:上下文
- Windows下Django项目搭建流程
- HTTP中的301、302、303、307、308
- python中的随机数生成
- Python用python-docx读写word文档
- [20190909]完善vim的bccacl插件.txt
- 关于APICloud与DCloud的我的一些看法
- 3.Python爬虫入门_正则表达式(简单例子)