Unity için yeniyim ve E-posta nesnesinin tekil bir örneğini başlatan ve kaydeden/bunları çözen bazı Unity mantığı yazmaya çalışıyorum; böylece başka bir nesne üzerinde kullanılabilir, bunun altında bir örnek OperationEntity'dir.Unity Singleton Kodu
Kayıt edildiğinde, e-posta tekilini bir yapılandırma dosyasındaki bazı değerlerle doldurur, ardından bir OperationEntity örneği oluşturulduğunda (benim durumumda serileştirilir) aynı E-posta tekilini kullanır. Bu nedenle benim tüm istemci mantığımın, OperationEntity'yi deserialize etmesi ve PerformAction'ı() - Unity tarafından bakılan e-posta örneğiyle çağırması gerekiyor.
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();
}
}
Herhangi bir yardım
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));
}
Bunu kurmak için C# Unity koduyla ilgili yardım arıyordum. – Bern
Belki [Singleton hakkında wiki] (http://wiki.unity3d.com/index.php/Singleton) biraz yardımcı olabilirdi. – cregox
@cregox Bu, bir grafik kütüphanesi olan Unity3d'ye bir bağlantıdır. Bu, [Birlik kabı] (https://msdn.microsoft.com/en-us/library/ff647202.aspx), DI çerçevesi ile ilgili bir sorudur. – Andy