Я работаю над настольным приложением, которое сгенерировало код для доступа к базе данных и использует статические объекты для идентификации пользователя.
Теперь нам нужно раскрыть некоторую логику с помощью веб-службы, и мы ищем наименее навязчивую форму для передачи пользовательской информации по конвейеру к классам доступа к базе данных.
Мы пришли к тому, чтобы передать делегат методам вставки / обновления, который выглядит следующим образом:
public delegate string GetLogin();
public class BaseEntity : BaseNotifiableEntity, System.ComponentModel.IDataErrorInfo
{
public GetLogin Login { get; set; }
(...)
}
public static class BaseEntityHelper
{
public static SqlCommand buildUpdateCommand(BaseEntity entity)
{
UpdateDefaultValues(entity, false);
(...)
}
public static void UpdateDefaultValues(BaseEntity entity, bool affectCreationFields)
{
if (entity.Login == null && AppServer.RunningApplication.CurrentUser == null)
throw new Exception("Something went wrong");
(...)
}
}
Так что в нашей логике будет что-то вроде этого:
public class Service
{
T_DIST_Service record;
(...)
public bool Update(DataAccess.Base.GetLogin login)
{
record.Login = login;
(...)
record.Update();
}
}
Это, конечно, включает в себя изменение множества методов в приложении.
Поэтому мне было интересно, есть ли простой способ сделать это с помощью внедрения зависимости (например).
Возможно, некоторые из вас уже пошли по этому пути и хотят поделиться своими мыслями.
Спасибо за ваше время.
РЕДАКТИРОВАТЬ 1:
Использование .NET