我正在使用c#.net开发一个小应用程序。我想以不同的方式使用它。随着Windows窗体应用程序和命令行应用程序。所以我有接口项目,我有内部核心DLL项目。在那个dll的一些程序中,我想告诉用户并询问我是否应继续我的操作。那么......通过我的界面项目与用户沟通的更好方法是什么?是否会将某些类型的委托函数传递给我的dll类或通过某些服务引用?
答案 0 :(得分:0)
您已使用以下条款:
为什么DLL有任何业务要求用户提供什么?我会重新考虑整个设计,以便DLL只是做实际的工作。其他一切,比如询问用户该做什么,只能在用户界面项目中完成。
您可以创建DLL可以调用的回调查询要做什么,但是您不应该假设这些调用提供用户交互。这意味着:您应该以某种方式设计它,以便DLL不需要知道如何将信息返回给它们,只有 将信息返回给它们
例如:假设您的一个DLL包含将文件从文件夹A
复制到文件夹B
的功能。如果复制一个文件失败,您希望用户决定是要中止还是继续使用所有其他文件。你可以创建一个这样的事件:
public class QueryContinueEventArgs : EventArgs
{
public QueryContinueEventArgs(string failedFile, Exeption failure)
{
FailedFile = failedFile;
Failure = failure;
Continue = false;
}
public string FailedFile { get; private set; }
public Exception Failure { get; private set; }
public Continue { get; set; }
}
public event EventHandler<QueryContinueEventArgs> QueryContinueAfterCopyFailure;
protected bool OnQueryContinueAfterCopyFailure(string fileName, Exception failure)
{
if (QueryContinueAfterCopyFailure != null)
{
QueryContinueEventArgs e = new QueryContinueEventArgs(fileName, failure);
QueryContinueAfterCopyFailure(this, e);
return e.Continue;
}
return false;
}
指定的事件处理程序可以提供用户交互并相应地设置Continue
标记。