Я столкнулся с проблемой круговой зависимости, когда я обращаюсь к методу classA из ClassB. У меня были следующие рекомендации ранее по моему решению. вызов метода класса A -> метод класса B, это нормально с ссылкой на библиотеку B в библиотеку A. Но тогда у меня было требование вызова метода classA из ClassB, но затем я не могу добавить ссылку, потому что она вызывает проблему с круговой зависимостью.не может решить проблему с круговой зависимостью
Итак, я попытался добавить интерфейс для решения проблемы.
Теперь я хочу вызвать метод GetDataFromDB() из класса B.
Как класть _classAObj в класс B. Нужно ли мне переходить из класса индекса, где находится основной метод.
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();
}
}
}
Непонятно, в чем проблема. Ваше решение для интерфейса в библиотеке C - это нормальный способ его исправления, и вы это уже сделали. Каков ваш реальный вопрос? –
@ScottChamberlain Мне нужно вызвать метод StartProcess() классаA из метода GetDataFromDB() класса B. Так что мне нужно передать объект classA из метода GetClientData() класса B с помощью перегруженного конструктора. –