本文整理汇总了C#中LinFu.IoC.ServiceContainer类的典型用法代码示例。如果您正苦于以下问题:C# ServiceContainer类的具体用法?C# ServiceContainer怎么用?C# ServiceContainer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ServiceContainer类属于LinFu.IoC命名空间,在下文中一共展示了ServiceContainer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ScopeShouldNeverCallDisposableOnScopedObjectCreatedInAnotherThread
public void ScopeShouldNeverCallDisposableOnScopedObjectCreatedInAnotherThread()
{
var mock = new Mock<IDisposable>();
var container = new ServiceContainer();
container.AddService(mock.Object);
using (var scope = container.GetService<IScope>())
{
var signal = new ManualResetEvent(false);
WaitCallback callback = state =>
{
// Create the service instance
var instance = container.GetService<IDisposable>();
signal.Set();
};
ThreadPool.QueueUserWorkItem(callback);
// Wait for the thread to execute
WaitHandle.WaitAny(new WaitHandle[] {signal});
}
// The instance should never be disposed
}
示例2: TestPropertyInjection
private static void TestPropertyInjection(string serviceName)
{
var mockTarget = new Mock<IInjectionTarget>();
mockTarget.Expect(t => t.SetValue(123));
var target = mockTarget.Object;
var container = new ServiceContainer();
container.AddService(serviceName, target);
// Use the named fluent interface for
// named instances
if (!String.IsNullOrEmpty(serviceName))
{
container.Initialize<IInjectionTarget>(serviceName)
.With(service => service.SetValue(123));
}
else
{
// Otherwise, use the other one
container.Initialize<IInjectionTarget>()
.With(service => service.SetValue(123));
}
var result = container.GetService<IInjectionTarget>(serviceName);
Assert.IsNotNull(result);
// The container should initialize the
// service on every request
mockTarget.VerifyAll();
}
示例3: LinFuAspectContainer
public LinFuAspectContainer(ServiceContainer container)
{
Proxy = new MasterProxy();
_container = container;
_container.PostProcessors.Add(new AspectPostProcessor());
_container.AddService(Proxy);
}
示例4: Init
public static void Init()
{
ServiceContainer container = new ServiceContainer();
container.AddService(typeof(IValidator), typeof(Validator));
container.AddService(typeof(IEntityDuplicateChecker), typeof(EntityDuplicateCheckerStub));
ServiceLocator.SetLocatorProvider(() => new LinFuServiceLocator(container));
}
示例5: ShouldLoadAssemblyIntoLoaderAtRuntime
public void ShouldLoadAssemblyIntoLoaderAtRuntime()
{
string path = Path.Combine(@"..\..\..\SampleFileWatcherLibrary\bin\Debug",
AppDomain.CurrentDomain.BaseDirectory);
string targetFile = "SampleFileWatcherLibrary.dll";
string sourceFileName = Path.Combine(path, targetFile);
var container = new ServiceContainer();
container.AutoLoadFrom(AppDomain.CurrentDomain.BaseDirectory, "dummy.dll");
// There should be nothing loaded at this point since the assembly hasn't
// been copied to the target directory yet
Assert.IsFalse(container.Contains(typeof (ISampleService)));
// Copy the assembly to the target directory
// and watch for changes
string targetFileName = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "dummy.dll");
File.Copy(sourceFileName, targetFileName, true);
// Give the watcher thread enough time to load the assembly into memory
Thread.Sleep(500);
Assert.IsTrue(container.Contains(typeof (ISampleService)));
var instance = container.GetService<ISampleService>();
Assert.IsNotNull(instance);
string typeName = instance.GetType().Name;
Assert.AreEqual("SampleFileWatcherServiceClassAddedAtRuntime", typeName);
}
示例6: LinFuAspectContainer
public LinFuAspectContainer(ServiceContainer container)
{
Proxy = new MasterProxy {Container = new LinFuServiceLocatorAdapter(container)};
_container = container;
_container.PostProcessors.Add(new AspectPostProcessor());
_container.AddService(Proxy);
}
示例7: Main
static void Main(string[] args)
{
string directory = AppDomain.CurrentDomain.BaseDirectory;
IServiceContainer container = new ServiceContainer();
// Load CarLibrary3.dll; If you need load
// all the libaries in a directory, use "*.dll" instead
container.LoadFrom(directory, "CarLibrary3.dll");
// Configure the container inject instances
// into the Car class constructor
container.Inject<IVehicle>()
.Using(ioc => new Car(ioc.GetService<IEngine>(),
ioc.GetService<IPerson>()))
.OncePerRequest();
Person person = new Person();
person.Name = "Someone";
person.Age = 18;
container.AddService<IPerson>(person);
IVehicle vehicle = container.GetService<IVehicle>();
vehicle.Move();
Console.WriteLine("Press ENTER to continue...");
Console.ReadLine();
}
示例8: InitializeServiceLocator
public static void InitializeServiceLocator()
{
ServiceContainer container = new ServiceContainer();
AddComponentsTo(container);
ControllerBuilder.Current.SetControllerFactory(new LinFuControllerFactory(container));
ServiceLocator.SetLocatorProvider(() => new LinFuServiceLocator(container));
}
示例9: Inject
private static void Inject(string serviceName, Action<IGenerateFactory<ISampleService>> usingFactory,
Func<IUsingLambda<ISampleService>, IGenerateFactory<ISampleService>> doInject,
ServiceContainer container)
{
// HACK: Condense the fluent statements into a single,
// reusable line of code
usingFactory(doInject(container.Inject<ISampleService>(serviceName)));
}
示例10: PrepareBasic
public override void PrepareBasic()
{
this.container = new LinFu.IoC.ServiceContainer();
this.RegisterDummies();
this.RegisterStandard();
this.RegisterComplex();
}
示例11: Prepare
public override void Prepare()
{
this.container = new LinFu.IoC.ServiceContainer();
this.container.Inject<ISingleton>().Using<Singleton>().AsSingleton();
this.container.Inject<ITransient>().Using<Transient>().OncePerRequest();
this.container.Inject<ICombined>().Using<Combined>().OncePerRequest();
this.container.Inject<ICalculator>().Using<Calculator>().OncePerRequest();
}
示例12: Main
static void Main(string[] args)
{
string directory = AppDomain.CurrentDomain.BaseDirectory;
IServiceContainer container = new ServiceContainer();
container.LoadFrom(directory, "*.dll");
Console.WriteLine("Press ENTER to continue...");
Console.ReadLine();
}
示例13: Test
private static void Test(string serviceName, Action<IGenerateFactory<ISampleService>> usingFactory, Func<IUsingLambda<ISampleService>, IGenerateFactory<ISampleService>> doInject, Func<string, IServiceContainer, bool> verifyResult)
{
var container = new ServiceContainer();
// HACK: Manually inject the required services into the container
container.AddDefaultServices();
Inject(serviceName, usingFactory, doInject, container);
verifyResult(serviceName, container);
}
示例14: Prepare
public override void Prepare()
{
this.container = new LinFu.IoC.ServiceContainer();
this.RegisterDummies();
this.RegisterStandard();
this.RegisterComplex();
this.RegisterMultiple();
this.RegisterPropertyInjection();
}
示例15: CanReturnServiceIfInitializedAndRegistered
public void CanReturnServiceIfInitializedAndRegistered()
{
ServiceContainer container = new ServiceContainer();
container.LoadFromBaseDirectory("Shaml.Data.dll");
container.AddService("validator", typeof(IValidator), typeof(Validator), LinFu.IoC.Configuration.LifecycleType.OncePerRequest);
ServiceLocator.SetLocatorProvider(() => new LinFuServiceLocator(container));
IValidator validatorService = SafeServiceLocator<IValidator>.GetService();
Assert.That(validatorService, Is.Not.Null);
}