我刚接触Unity,正在尝试编写一些Unity逻辑,以初始化、注册/解析Email对象的单例实例,以便在其他多个对象中使用。例如下面的OperationEntity。
因此,在注册时,它会从配置文件中填充Email单例实例的某些值,然后每当创建一个OperationEntity实例(在我的情况下是反序列化)时,它都使用相同的Email单例实例。因此,所有客户端逻辑只需反序列化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",
"to@email.com")));
var email = container.Resolve<IEmail>();
container.RegisterType<OperationEntity>(
"email", new ContainerControlledLifetimeManager(),
new InjectionConstructor(email));
}