ResolverOverride ile Gidermek Nasıl kullanılır?birlik 2.0:
Daha fazla ve daha fazla çalışmak Unity ile başladım. Çözümleyici yöntem aldığını fark ettimparametrelerbağımsız değişkenResolverOverride.
Biri bana kullanabileceğim nasıl bir örnek verebilirimResolverOverrideya da bana daha fazla ipucu alabileceğim başka bir kaynak noktası.
CEVAP
Fark ettiğiniz gibi bu bir yeni (ve gerçekten harika bir özelliği) Birlik 2. Bu özellik izin verin
- parametreleri sınıf gidermek an yapıcı olur. Yeni İnjectionConstructor) türü kayıt esnasında anda yalnızca bir değer ayarlayabilirsiniz birlik 1(...)
ParameterOverride : ResolverOverride
yoktur
Sağlayan ResolverOverride bir sınıf adlandırılmış bir parametre geçirildi geçersiz kılar kurucu.
DependencyOverride : ResolverOverride
bağımlılıkları ile aynı
Değeri geçersiz kılan bir sınıf bir olduğunda enjekte bağımlılık verilen tür, bu içinde bulunduğu yere bakılmaksızın grafik nesnesi.
PropertyOverride : ResolverOverride
ile özellikleri aynı
Sağlayan bir ResolverOverride belirli bir özellik değeri geçersiz kılar.
Örnek
using System;
using Microsoft.Practices.Unity;
namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
var container = new UnityContainer();
//ParameterOverride example
container.RegisterType<IConcreteService, ConcreteService>(
new InjectionConstructor(7) //Old way to pass value to constructor - not flexible.
//All resolved (without ovverride wich aapears only in unity 2.0) classes will hav val=7
);
var service0 = container.Resolve<IConcreteService>();
Console.WriteLine(service0.Val); //prints 7
var service = container.Resolve<IConcreteService>(new ParameterOverride("val", 3));
Console.WriteLine(service.Val); // prints 3
var service2 = container.Resolve<IConcreteService>(new ParameterOverride("val", 5));
Console.WriteLine(service2.Val); // prints 5
Console.ReadLine();
//DependencyOverride example
var b0 = container.Resolve<B>(new DependencyOverride<IConcreteService>(new ConcreteService(42)));
Console.WriteLine(b0.Service.Val); //print 42
Console.WriteLine(b0.Service1.Val); //print 42
var b = container.Resolve<B>(new DependencyOverride<IConcreteService>(new ConcreteService(-42)));
Console.WriteLine(b.Service.Val); // print -42
Console.WriteLine(b.Service1.Val); // print -42
Console.ReadLine();
//PropertyOverride example
var b1 = container.Resolve<B>(new PropertyOverride("Service", new ConcreteService(42)),
new PropertyOverride("Service1", new ConcreteService(-42)));
Console.WriteLine(b1.Service.Val); //print 42
Console.WriteLine(b1.Service1.Val); //print -42
Console.ReadLine();
}
}
public interface IConcreteService {
int Val { get; set; }
}
public class ConcreteService : IConcreteService {
public int Val { get; set; }
public ConcreteService(int val) {
Val = val;
}
}
public class B {
[Dependency]
public IConcreteService Service{ get; set; }
[Dependency]
public IConcreteService Service1 { get; set; }
}
}
Bu konuda sessizliğini koruyor neden hiçbir fikrim yok.
Tırnak Birlik kaynak kodu xml belgeleri.
Nasıl Birlik Gıt kaynak kontrol için k...
Vim kayıtları nasıl kullanılır?...
Nasıl yansıması genel bir Yöntemi çağı...
Geçişlerini için Dinlenmek nedir ve na...
Nasıl ve kabuk boolean değişkenleri bi...