c# 使用参数的计算结果调用 base()

标签 c# constructor

我需要编写一个根据输入参数自动确定消息的异常类。我怎样才能将该动态消息传递给 base()?

这是我想做的代码,但它不起作用

public class MyException : Exception
{

    public MyException(int ErrCode, Dictionary<string, string> Params) : base(msg_external)
    {
        ErrorDetail = ErrorList[ErrCode];

        string msg_internal = "";
        string msg_external = "";

        foreach (var item in Params)
        {
            msg_internal = ErrorDetail.MessageInternal.Replace(item.Key, item.Value);
            msg_external = ErrorDetail.MessageExternal.Replace(item.Key, item.Value);
        }

        //now I need to pass msg_external to the base(). how?

    }

}

这个问题不是关于在我的构造函数之后调用构造函数,而是关于将不同的值传递给父构造函数。

最佳答案

这里的代码将执行您想要的操作。

假设输入良好。建议进行错误检查。

public class MyException : Exception
{
    private static string BaseExceptionMessage(int ErrCode, Dictionary<string,string> Params)
    {
        return Params.Aggregate(ErrorList[ErrCode].MessageExternal, (i, a) => i.Replace(a.Key, a.Value));
    }
    public MyException(int ErrCode, Dictionary<string, string> Params) : base(BaseExceptionMessage(ErrCode, Params))
    {
        ErrorDetail = ErrorList[ErrCode];

        string msg_internal = "";
        string msg_external = "";

        foreach (var item in Params)
        {
            msg_internal = ErrorDetail.MessageInternal.Replace(item.Key, item.Value);
            msg_external = ErrorDetail.MessageExternal.Replace(item.Key, item.Value);
        }
    }

}

关于c# 使用参数的计算结果调用 base(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45286807/

相关文章:

c# - 使用没有 foreach 的 LINQ 按类别划分产品列表

c# - 使用 Dapper 调用 SQL 过程

c# - PropertyInfo 中的属性与 CustomAttributes

c++ - 如何创建一个类对象数组,其构造函数只需要很少的参数?

java - 在调用子类构造函数之前,编译器是否会在子类构造函数中查找 **super** 关键字?

c++ - 我应该在构造函数中调用成员函数吗

c# - Sitecore 动态更改字段工具提示

c# - 使用 Webbrowser C# 从 iframe 读取 HTML 代码

java - 构造函数未定义问题

c++ - 在 C++ 文档教程的这个示例中,为什么指针声明了两次?