Я новичок в Unity и пытаюсь написать некоторую логику Unity, которая инициализирует и регистрирует/решает один экземпляр объекта электронной почты, чтобы он мог можно использовать для нескольких других объектов, один из примеров ниже - OperationEntity.
Таким образом, когда он регистрируется, он заполняет одноэлемент электронной почты некоторыми значениями из файла конфигурации, тогда всякий раз, когда создается экземпляр OperationEntity (в моем случае он десериализован), он использует тот же самый сингл электронной почты. Таким образом, вся моя клиентская логика должна выполнять десериализацию OperationEntity и вызывать PerformAction() - с экземпляром электронной почты, позаботившимся об Unity.
public interface IEmail
{
string FromName { get; set; }
string FromEmailAddress { get; set; }
}
public class Email : IEmail
{
public string FromName { get; set; }
public string FromEmailAddress { get; set; }
public Email(string fromName, string fromEmailAddress)
{
FromName = fromName;
FromEmailAddress = fromEmailAddress;
}
}
public class OperationEntity
{
private readonly IEmail _email;
public int OperationId { get; set; }
public string OperationName { get; set; }
public string ToAddress { get; set; }
public OperationEntity(IEmail email)
{
_email = email;
}
public void PerformAction()
{
_email.ToAddress = ToAddress;
_email.Body = "Some email body";
_email.Deliver();
}
}
Любая помощь будет оценена при использовании этого кода Unity
public static void Register(IUnityContainer container)
{
container
.RegisterType<IEmail, Email>(
new InjectionFactory(c => new Email(
"To Name",
"[email protected]")));
var email = container.Resolve<IEmail>();
container.RegisterType<OperationEntity>(
"email", new ContainerControlledLifetimeManager(),
new InjectionConstructor(email));
}