visual studio - c#中每个类的参考资料

本文关键字:参考资料 studio visual | 更新日期: 2023-09-27 18:01:22

我正在使用visual studio创建一个windows应用程序,我有以下问题。

我得到一个循环依赖错误,因为我有这样的设置:

project1.classA.cs
project2.classB.cs
project2.classC.cs

现在,classB有一个classA的成员,所以我添加了一个对project1的引用。现在我想让类A利用类c中的静态函数。然而,由于循环依赖,我不能添加对project2的引用。有没有办法解决这个问题,而不需要我创建一个新项目?

visual studio - c#中每个类的参考资料

我认为您最好提取通用方法和接口,并将它们放在单独的类库中。

然而,通过为类C发明一个接口并将其放在项目1中,可以在不编写新类库的情况下做到这一点:

public interface IClassC
{
    void Method1();
    void Method2();
}

然后在项目1中,你可以使用依赖注入将它传递给ClassA构造函数:

public class ClassA
{
    readonly IClassC _methodsFromClassC;
    public ClassA(IClassC methodsFromClassC)
    {
        _methodsFromClassC = methodsFromClassC;
    }
    public void SomeMethod()
    {
        _methodsFromClassC.Method1();
        _methodsFromClassC.Method2();
    }
}

然后在项目2中,您需要使用静态ClassC实现该接口:

public static class ClassC
{
    public static void Method1()
    {
        Console.WriteLine("ClassC.Method1()");
    }
    public static void Method2()
    {
        Console.WriteLine("ClassC.Method2()");
    }
}
public class ClassCImpl : IClassC
{
    public void Method1()
    {
        ClassC.Method1();
    }
    public void Method2()
    {
        ClassC.Method2();
    }
}

当你创建一个ClassA实例时,你必须传递一个ClassCImpl实例:

var classA = new ClassA(new ClassCImpl());

但是,重申一下:您实际上应该创建一个单独的类库来保存共享的接口和类。

这不是一个很好的情况,但事实是你不想创建一个新的项目,让我相信你已经考虑了所有明智的选择。

我认为留给你的唯一选择是将文件project2.classC.cs本身添加到project1中,但一定要在"选择"对话框中勾选"包含作为链接"选项,这样你就不会复制。这不是很好,但它应该工作。

右键单击项目,选择Add -> Existing Item,选中文件,然后单击Add按钮右侧的下拉菜单,选择Add as Link