c#中的循环依赖

时间:2017-11-08 11:25:27

标签: c# events delegates

我在解决方案中有5个项目。 A和B是两个项目。 B已经引用了A.现在我想从B中调用A中的方法。但问题是循环依赖。我看到它通过使用事件来解决。我试过这个:

A------->B(reference A)
B------->A(dependency)

我也是从A使用事件尝试过的。但我无法向事件添加侦听器方法,因为侦听器方法在B中。我无法访问B。

有谁能告诉我如何使用事件解决这个问题。代表们,我在活动方面没有多少经验。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

解决这个问题的方法是建立一个共同项目来弥补项目之间的差距。例如,如果您想在项目之间共享翻译词典,可以在Common项目中添加类似的内容:

// Leaving out locking and error handling
public static Lexicon
{
    private static Func<string, string> _lookup=null;
    public static void Initialize(Func<string, string> lookup)
    {
        _lookup=lookup;
    }
    public static string Translate(string key)
    {
        return _lookup(key);
    }
}

如果项目A实际上包含翻译词典,它可以像这样初始化词典:

Lexicon.Initialize(key => dictionary[key]);

两个项目都可以使用Lexicon