use*_*673 5 c# architecture console winforms
我的解决方案中有三个c#项目.一个是控制台应用程序,只需调用类库项目.类库项目执行应用程序的所有处理.然后有一个WinForm项目显示一个表单,然后当按下一个按钮时,调用类库项目中的相同逻辑.因此,有两种方法可以通过控制台或Windows UI(WinForm)运行逻辑.
我的问题是通过类库逻辑的一部分,如果正在使用UI应用程序,我想要一个自定义的WinForm表单来向用户询问一个问题.
在控制台应用程序中,我希望逻辑中的相同位置可以简单地写入控制台.在我对架构的理解中,您不希望类库项目包含WinForm逻辑,并要求它引用所有WinForm引用.但是如何调用WinForms项目(或其他东西)来显示自定义WinForm表单?将有一个循环引用,其中类库将引用主WinForm应用程序,WinForm应用程序将引用类库项目.
这样做的标准方法是什么?
您可以创建一个由库定义的接口来与调用者进行通信,然后让两个调用应用程序定义自己的该接口的实现,库调用该接口上的方法并且对实现一无所知。
调用者相应地处理方法......
public interface IProgressReporter
{
void ReportMessage(string message);
}
public class WinFormsProgressReporter : IProgressReporter
{
public void ReportMessage(string message)
{
MessageBox.SHow(message);
}
}
public class ConsoleAppProgressReporter : IProgressReporter
{
public void ReportMessage(string message)
{
Console.WriteLine(message);
}
}
public class LibraryClass
{
public static void SomeMethod(IProgressReporter rep)
{
rep.ReportMessage("Wooooohooooo!");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |