Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化构造函数中相互包含的2个类_C# - Fatal编程技术网

C# 初始化构造函数中相互包含的2个类

C# 初始化构造函数中相互包含的2个类,c#,C#,我有两个类,ExceptionHandler和Localizer。异常处理程序构造函数如下所示: public ExceptionHandler(ILocalizer localizer, string logLocation) { Localizer = localizer; LogLocation = logLocation; } public Localizer(IExceptionHandler exceptionHandler) { ExceptionHand

我有两个类,ExceptionHandlerLocalizer异常处理程序
构造函数
如下所示:

public ExceptionHandler(ILocalizer localizer, string logLocation)
{
    Localizer = localizer;
    LogLocation = logLocation;
}
public Localizer(IExceptionHandler exceptionHandler)
{
    ExceptionHandler = exceptionHandler;
}
此外,在类中,
定位器
用于本地化某些异常消息,如英语中的“未找到文件”,荷兰语中的“Bestand niet gevonden”

另一方面,定位器类可能有某些异常,因此需要异常处理程序类。构造函数如下所示:

public ExceptionHandler(ILocalizer localizer, string logLocation)
{
    Localizer = localizer;
    LogLocation = logLocation;
}
public Localizer(IExceptionHandler exceptionHandler)
{
    ExceptionHandler = exceptionHandler;
}

现在,是我还是我想要的不可能实现?有什么解决方法可以让它工作吗?

您可以在创建
定位器
异常处理程序
对象之后设置
定位器。异常处理程序
。只需确保构造函数不会抛出异常,或者
本地化程序
构造函数中的异常是在没有
异常处理程序的情况下处理的

是的,确实不可能。循环依赖性。。一定是设计上的疏忽!:(我想它也会反过来工作?但这真的是一个“干净”的解决方案还是我应该改变我的代码设计?@Krowi我不知道它是否“干净”,但根据提供的信息,我会这样做。如果我有更多信息,谁知道呢,也许我会完全重新设计代码。计划是在应用程序启动时初始化这两个类。这样我就有了两个“全局”类,我可以在应用程序中的任何地方使用。(我试过DI,但现在它太让人困惑了,与我的问题毫无关系)