interface IFoo{
void DoFoo();
}
class Foo : IFoo {
public void DoFoo() {
Console.WriteLine("DoFoo()");
}
}
class FooFactory{
static public IFoo Create() {
Console.WriteLine("CreateInstance");
var foo = new Foo();
return foo;
}
}
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.StaticFactory;
// ...
IUnityContainer container = new UnityContainer();
方法一:
container.AddNewExtension<StaticFactoryExtension>()
.Configure<IStaticFactoryConfiguration>()
.RegisterFactory<IFoo>(unity => FooFactory.Create());
方法二:(推荐使用方法)
container.RegisterType<IFoo, IFoo>(new InjectionFactory(unity => FooFactory.Create()));
void DoFoo();
}
class Foo : IFoo {
public void DoFoo() {
Console.WriteLine("DoFoo()");
}
}
class FooFactory{
static public IFoo Create() {
Console.WriteLine("CreateInstance");
var foo = new Foo();
return foo;
}
}
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.StaticFactory;
// ...
IUnityContainer container = new UnityContainer();
方法一:
container.AddNewExtension<StaticFactoryExtension>()
.Configure<IStaticFactoryConfiguration>()
.RegisterFactory<IFoo>(unity => FooFactory.Create());
方法二:(推荐使用方法)
container.RegisterType<IFoo, IFoo>(new InjectionFactory(unity => FooFactory.Create()));
调用
IFoo foo = container.Resolve<IFoo>();
foo.DoFoo();