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的引用。有没有办法解决这个问题,而不需要我创建一个新项目?
我认为您最好提取通用方法和接口,并将它们放在单独的类库中。
然而,通过为类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
。