Разбивая мой C приложения # в слоях, я решил проблему круговой зависимости между слоями следующим образом:Невозможно получить данные из уровня DA. Что делать?
using System;
using System.Collections.Generic;
using System.Text;
using SolvingCircularDependency.Common;
using SolvingCircularDependency.DA;
namespace SolvingCircularDependency.BO
{
public class MyClass : IPersistent
{
private string _message;
public string Message
{
get { return _message; }
set { _message = value; }
}
public bool Save()
{
return MyClassDA.Save(this);
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace SolvingCircularDependency.Common
{
public interface IPersistent
{
bool Save();
string Message { get;}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using SolvingCircularDependency.Common;
namespace SolvingCircularDependency.DA
{
public class MyClassDA
{
public static bool Save(IPersistent obj)
{
Console.WriteLine(obj.Message);
return true;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using SolvingCircularDependency.BO;
namespace SolvingCircularDependency.UI
{
class Program
{
static void Main(string[] args)
{
MyClass myobj = new MyClass();
myobj.Message = "Goodbye Circular Dependency!";
myobj.Save();
Console.ReadLine();
}
}
}
Пожалуйста, обратите внимание на класс MyClassDA в слое DA и сама сборка.
Как метод MyDA.Get() возвращает объекты типа MyClass, когда уровень доступа к данным не знает о типе MyClass.
Если этот проект неэффективен, как его изменить или изменить?
Это невероятно плохо сформулированный вопрос. Я прочитал ваш другой пост, но я понятия не имею, что вы ищете. Можете ли вы переформулировать это, указав свою проблему более конкретно? –
Я тоже не понимаю, о чем вы спрашиваете. Какой код должен представлять? Я не вижу класс UserDA в любом месте. Что означает «экземпляры интерфейса не могут быть материалами с данными, полученными SqlDataReader»? –
С какой частью у вас проблемы? Вы вообще не знаете, как делать доступ к данным? –