我是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",
"to@email.com")));
var email = container.Resolve<IEmail>();
container.RegisterType<OperationEntity>(
"email", new ContainerControlledLifetimeManager(),
new InjectionConstructor(email));
}