Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MEF生成/打印自定义报告?_C#_.net 4.0_Mef - Fatal编程技术网

C# 使用MEF生成/打印自定义报告?

C# 使用MEF生成/打印自定义报告?,c#,.net-4.0,mef,C#,.net 4.0,Mef,我有一个为最终用户生成报告的应用程序。这些是DevExpress XtraReports。一个用户可能希望报表中的某些字段采用某种格式,而另一个用户可能希望相同或更多字段采用不同格式。而不是像这样做: if(user == "") //print report for this user PrintReport(user); else //print report for other user PrintReport(user) 我认为最好在这里使用MEF并创建一些IPri

我有一个为最终用户生成报告的应用程序。这些是
DevExpress XtraReports
。一个用户可能希望报表中的某些字段采用某种格式,而另一个用户可能希望相同或更多字段采用不同格式。而不是像这样做:

if(user == "")
   //print report for this user
   PrintReport(user);
else
  //print report for other user
  PrintReport(user)

我认为最好在这里使用
MEF
并创建一些
IPrintReport
界面,让
MEF
根据我的
PrintReport
方法目录中的程序集来管理应该打印的报告。这是使用
MEF
的好方案,还是有更好或更简单的方法来处理这一问题?

我认为这是一种可以使用
MEF
来解决您的问题的情况,但我首先要问自己一个问题:

  • 我是否需要在不重新编译主应用程序的情况下添加其他报告格式
如果不是的话,我认为在这种情况下,
MEF
是过分的。使用
MEF
的主要好处是,我的应用程序的模块可以独立于主应用程序开发。我不需要重新发布整个应用程序来修复其中一个组件中的一个小错误。我可以简单地将新的.dll放到一个文件夹中,我的应用程序就会开始使用它

如果您对上述问题回答“否”,我不会为此使用
MEF
。相反,我将创建您提到的
IPringReport
接口。实现此接口的所有类都可以在应用程序设置中列出,用户可以在其中选择所需的格式。如果您的用户不想处理选择格式的问题,您可以简单地使用一个设置文件为他们设置格式