当我从ClassB访问classA方法时,我遇到了循环依赖问题。 我之前有过关于我的解决方案的参考资料 classA方法调用 - > B类方法,将库B引用到库A就可以了。 但后来我需要从ClassB调用classA方法,但后来我不能添加引用,因为它正在产生循环依赖问题。
所以我试图添加一个界面来解决问题。
现在我想从B类调用GetDataFromDB()方法。
如何在B类中创建_classAObj。我是否需要从main方法所在的索引类进行传输。
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();
}
}
}
答案 0 :(得分:1)
只需使用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)
构造函数。