viz*_*yno 3 c# dependency-injection
我开发了一个C#类库,它们的一些方法显示了它的处理进度信息,因为它们读写了数百万条记录,并且用户要求了解进程的进展情况以及它们应该等待的时间.
如果WPF应用程序显示进度条,则使用依赖注入来避免"如果控制台应用程序在控制台上写入进度",(1)如果从控制台调用该方法,我在控制台上显示处理每一百万条记录的时间应用程序和(2)如果从WPF应用程序调用该方法,我在GUI上显示进度条.
这里的问题是,这是一个很好的做法,我正在做什么,或者有更好/正确的替代方案吗?
我最诚挚的问候.
请不要这样做.如果要构建类库,则应该假设UI正在与用户交互.
如果你有一个控制台窗口或WPF应用程序,你的解决方案听起来可能有用,但是如果它是从网站或服务内部调用的呢?我看到很多服务因为一些流氓类库试图显示一个对话框而被打倒,但周围没有人点击OK.
更好的解决方案是在您想要报告某些进度时简单地引发事件,并让消费UI应用程序担心它希望如何向用户显示该进度.
了解BackgroundWorker类如何为这个良好的模型工作:http://msdn.microsoft.com/en-us/library/8xs8549b.aspx
我不希望类库显示进度本身.我希望它提供钩子 - 可能是以事件的形式 - 所以使用类库的任何东西都可以以最合适的形式显示这些信息.
您想要给予多少控制权(例如,在每个项目或每N个项目上向我报告)是您必须自己解决的问题 - 但是对于处理程序来说这应该是相当容易的事情本身.