首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现插件/模板化系统c#

实现插件/模板化系统c#
EN

Stack Overflow用户
提问于 2012-01-27 16:51:13
回答 2查看 190关注 0票数 0

我有一个相当简单的控制台应用程序,可以监视exchange邮箱,挑选出特定的电子邮件,并根据内容更新几个数据库。

我想实现几个类似的系统。虽然复制这个系统非常简单,但我正在研究一个更复杂的解决方案--主要是一个智力练习,一个学习练习。

我想构建一个核心应用程序,该应用程序定期从DB中提取模板信息;该信息将告诉应用程序,它必须在特定的时间间隔内监视具有给定特征的电子邮件。

我设想用一些虚拟函数(预处理、处理项、归档项、发送通知等)创建一个主模板(程序集)。反过来,我会创建任意数量的模板来实现主模板中的接口,但是在每种情况下,功能可能会大相径庭,一个可能更新数据库,另一个则可能在文件系统中存储一些东西。

我的第一个问题是这样做是否明智?

我的第二个问题是如何动态引用每个模板,以及如何在适当的时候调用这些模板的方法?

如果我要扩展我的模板项目,为每一个所需的新模板添加一个新的类,我就可以克服动态引用模板的问题。但如果我想把它们分开..。有没有办法把他们扔进这个项目?不要忘记,模板将在DB中列出,所以应用程序会注意到它们,但是如何使用它们.

UPDATE:我已经知道如何动态引用每个模板类;它要求我向GetType提供程序集-限定名称:我尝试在主应用程序中动态生成模板:

代码语言:javascript
复制
string aqn= "MasterTemplates.TestTemplate, TestTemplate, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
MasterTemplate mt = (MasterTemplate)Activator.CreateInstance(Type.GetType(aqn));

因此,如果我继续更新我的MasterTemplates项目,并在必要时添加新的类,我可以实现我的目标。然而,如何处理不同的模板程序集?

同时,我将很快研究DBM对托管扩展框架的建议。

结论:我没有时间对MEF进行全面的调查,虽然这对我目前的需求来说是过分的,但它看起来非常有希望。我还没有想到如何轻松地为不同的模板开发和使用不同的程序集--而是将所有的模板保存在一个程序集中,每次我需要一个新的模板时,都必须重新编译和更新。不像MEF那样复杂,但更简单,更适合我目前的需求。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-27 18:02:44

当使用带有字符串的激活器时,请使用Activator.CreateInstance(字符串,字符串)重载。

或者,您可以创建一个类型的实例,并这样使用它:

代码语言:javascript
复制
Activator.CreateInstance(Type.GetType(templateName));
票数 1
EN

Stack Overflow用户

发布于 2012-01-27 16:58:31

您可以使用MEF动态加载插件。它是在VS2010中的盒子,并工作在动态加载程序集。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9037009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档