C# 两个项目之间的接口实现

C# 两个项目之间的接口实现,c#,vb.net,interface,circular-reference,C#,Vb.net,Interface,Circular Reference,在两个项目之间寻找循环参考问题的解决方案时,我遇到了以下问题: 您可以使用dependen-on-B。为简单起见,假设A.EXE依赖于B.DLL。然后,当A最初调用B时,它可以给它一个在B中定义的某种类型或接口的对象,然后B可以在稍后的某个点返回并调用A。 换句话说,B定义了一个基类或接口,比如“我想要只有a能做的东西”,但没有实现它。然后让A实现它,将它传递给您,并调用它。这绕过了循环依赖,而没有第三个项目。这适用于任何一对托管项目。 我试着实现所说的,但我似乎没有做到正确。所以我的问题是,有

在两个项目之间寻找循环参考问题的解决方案时,我遇到了以下问题:

您可以使用dependen-on-B。为简单起见,假设A.EXE依赖于B.DLL。然后,当A最初调用B时,它可以给它一个在B中定义的某种类型或接口的对象,然后B可以在稍后的某个点返回并调用A。

换句话说,B定义了一个基类或接口,比如“我想要只有a能做的东西”,但没有实现它。然后让A实现它,将它传递给您,并调用它。这绕过了循环依赖,而没有第三个项目。这适用于任何一对托管项目。

我试着实现所说的,但我似乎没有做到正确。所以我的问题是,有人能给我一个如何实现这一点的代码示例吗(最好是VB.Net,C#就可以了)

供参考的原始问题如下:

只是一个小小的吹毛求疵。这不是真正的循环依赖,因为“这是只有
a
才能做的事情”的想法是错误的。
B
真正知道的是“这是只有别人才能做的事情”。可能只有
A
才能做到这一点,但
B
并不知道这一点

无论如何,一个简单的例子是:

在汇编
B
中:

public interface ISomething
{
    void PerformAction();
}

public class ActionManager
{
    public void DoSomething(ISomething something)
    {
        something.PerformAction();
    }
}
public class ActionPerformer : ISomething
{
    public void PerformAction()
    {
        ...
    }
}

public class Program
{
    public static void Main()
    {
        ActionManager manager = new ActionManager();
        ActionPerformer performer = new ActionPerformer();

        manager.DoSomething(performer);
    }
}
在组件
A
(参考
B
)中:


简而言之,这个示例演示了(在完全多态解析之后)将
A
调用
B
,然后
B
调用
A

您尝试了什么?给我们看看你的代码!如果没有一个更具体的例子,你很难理解你想做什么。但听起来您的问题可能会得到解决,或者至少可以通过一个多个项目可以引用的类库得到帮助。这样,他们都以相似的方式处理数据。很可能会被否决。对于否决的选民来说,亚当·罗宾逊的回答实际上帮了我很多忙。天哪。。我没有提供代码,因为我认为引用的文本足够清晰。(显然,我的想法没有错,因为已经有了一个非常好的答案)。@Frank:你需要意识到的是,我们在SO的存在是为了帮助你修复代码,而不是从头开始解释设计模式。有更好的资源来做这些事情。我们知道你只是想知道你不明白的事情的答案。我们都去过那里。请记住,StackExchange包含许多部分,它们非常集中。这个问题存在于代码中。