dll与用户交互

时间:2013-10-01 10:34:40

标签: c# dll user-interaction

我正在使用c#.net开发一个小应用程序。我想以不同的方式使用它。随着Windows窗体应用程序和命令行应用程序。所以我有接口项目,我有内部核心DLL项目。在那个dll的一些程序中,我想告诉用户并询问我是否应继续我的操作。那么......通过我的界面项目与用户沟通的更好方法是什么?是否会将某些类型的委托函数传递给我的dll类或通过某些服务引用?

1 个答案:

答案 0 :(得分:0)

您已使用以下条款:

  1. 接口项目
  2. 内部核心 dll项目
  3. 为什么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标记。