单例类

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

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

最新文章

  1. LeetCode(124) Binary Tree Maximum Path Sum
  2. WCF在编译出现 “错误 3 命令“时解决
  3. oracle应该安装在什么版本的linux下
  4. 51NOD 算法马拉松12
  5. Java框架----SSH整合回顾
  6. HTTP协议 流程图
  7. sql server 2008 case when
  8. childNodes属性 和 nodeType属性
  9. 【安装Python环境】之“安装 setuptools ”时出现的问题以及解决办法
  10. 十条最有效的PCB设计黄金法则
  11. 自己动手写web框架----1
  12. Vue+koa2开发一款全栈小程序(7.图书录入功能)
  13. shell脚本中的数据传递方式
  14. 前端开发 - JavaScript
  15. BZOJ5416 NOI2018冒泡排序(动态规划+组合数学)
  16. 在电脑用Chrome运行安卓apk程序[ARC Welder]
  17. vue 之 .$mount()
  18. Chrome 鼠标左键-新标签打开
  19. How to Pronounce OF
  20. 集合 数组 定义 转换 遍历 Arrays API MD

热门文章

  1. LabVIEW工控二进制数据存储
  2. Z从壹开始前后端分离【 .NET Core2.0/3.0 +Vue2.0 】框架之三 || Swagger的使用 3.1
  3. Flask笔记:上下文
  4. Windows下Django项目搭建流程
  5. HTTP中的301、302、303、307、308
  6. python中的随机数生成
  7. Python用python-docx读写word文档
  8. [20190909]完善vim的bccacl插件.txt
  9. 关于APICloud与DCloud的我的一些看法
  10. 3.Python爬虫入门_正则表达式(简单例子)