Unity Singleton Code

Je suis nouveau sur L'unité et suis en train d'écrire une certaine Unité logique qui initialise et s'inscrire/se résout en une instance du singleton de l'objet du Courriel, de sorte qu'il peut être utilisé dans plusieurs autres objets, un exemple ci-dessous OperationEntity.

Alors, quand il est enregistré, il remplit l'e-Mail singleton avec certaines valeurs à partir d'un fichier de config, puis chaque fois qu'une instance de OperationEntity est créé (dans mon cas, c'est désérialisé), il utilise ce même e-Mail singleton. De sorte que tous mes clients logique doit faire est de désérialiser OperationEntity et appel PerformAction() - avec l'e-mail de l'instance de prise en charge par l'Unité.

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();
    }
}

Toute aide serait appréciée dans l'obtention de cette Unité code du travail

    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));
    }

source d'informationauteur Bern