C#中两个项目的循环依赖

前端之家收集整理的这篇文章主要介绍了C#中两个项目的循环依赖前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个名为ProjectA(ConsoleApplication)和ProjectB(ClassLibrary)的解决方案中有两个项目. ProjectA参考了ProjectB.一般来说,ProjectA在ProjectB中调用一个方法来做一些事情,并将结果返回给ProjectA.有时候,我需要ProjectB向ProjectA发送一些“附加”信息(更具体地说是在ProjectA中调用Console.WriteLine()方法).要实现这一点,我需要在ProjectB中引用ProjectA,但是当我尝试这样做时,我会收到以下错误

无法添加对ProjectA的引用.将此项目添加为参考将导致循环依赖.

我理解整个耦合的概念,并且有意义的是得到这个消息,但是,在某些情况下,我需要向ProjectA发送更多的信息.有任何想法吗?

解决方法

我建议你使用事件和听众.例如,您可以通过Trace.WriteLine从ProjectB发送消息,而在ProjectA中,您可以添加跟踪的订阅者. .NET已经提供了一个ConsoleTraceListener类,用于将跟踪消息路由到控制台.您可以通过以下方式从ProjectA添加一个侦听器:
Trace.Listeners.Add(new ConsoleTraceListener());

或者,如果您不想使用集成类,则可以在ProjectB中构建一个非常简单的“源”类,该类将使用Action< string>作为其签名(虽然我建议您为其创建代理),然后从ProjectA订阅.通常,.NET类更灵活.

项目B

public static class MyTrace
{
    public static event Action<string> MessageReceived;

    internal static void Broadcast(string message)
    {
        if (MessageReceived != null) MessageReceived(message);
    }
}

项目A

MyTrace.MessageReceived += s =>
{
    /*Operate*/
};

猜你在找的C#相关文章