无法解决循环依赖问题

cannot resolve circular dependency issue

我在从 ClassB 访问 classA 方法时遇到了循环依赖问题。 我的解决方案之前有以下参考资料。 classA 方法调用 -> class B 方法,这可以将库 B 引用到库 A。 但后来我需要从 ClassB 调用 classA 方法,但后来我无法添加引用,因为它造成了循环依赖问题。

所以我尝试添加一个接口来解决这个问题。

现在我想从 class B 调用 GetDataFromDB() 方法。

如何在 Class B 中创建 _classAObj。我是否需要从主要方法所在的索引 class 转移。

using ClassLibraryC;

namespace ClassLibraryB
{
    public class ClassB 
    {
        IClassA _classAObj = null;

        public ClassB()
        { }

        public ClassB(IClassA objc)
        {
            _classAObj = objc;
        }

        public string GetDataFromDB(string cdata)
        {
            // connect db and get data
            // using data reader
              while(rdr.read())
             {
                // need to call StartProcess() method of classA
                _classAObj.StartProcess("data");
             }
            return  "client data:name : xyz: age:23";
        }
    }

using ClassLibraryB;
using ClassLibraryC;

namespace ClassLibraryA
{
    public class ClassA : IClassA
    {

        public ClassA() {}

        public void  GetClientData()
        {
            ClassB b = new ClassB();
            string result=  b.GetDataFromDB("c1");
        }

        public void StartProcess(string d)
        {
            string data = d; 
        }
    }
}

using ClassLibraryA;

namespace ClassLibraryC
{
   public interface IClassA
    {
        void StartProcess(string d);
    }
}

namespace Start
{
    class Index
    {
        static void Main(string[] args)
        {
            ClassA a = new ClassA();
            a.GetClientData();
        }
    }
}

只需使用 this.

将 ClassA 的实例传递给 ClassB
public class ClassA : IClassA
{
    public ClassA() {}

    public void  GetClientData()
    {
        ClassB b = new ClassB(this);
        string result=  b.GetDataFromDB("c1");
    }

    public void StartProcess(string d)
    {
        string data = d; 
    }
}

您可以去掉 ClassB() 构造函数,不再需要它,您只需要 public ClassB(IClassA objc) 构造函数。