, . , . , , , .
, , , Castle DynamicProxy, Reflection, IoC, Ninject, .
, "" Module1.dll, Module2.dll
public interface IFooProvider {
void Foo GetFoo();
}
, , . DI IoC, .
:
public interface IServiceLocator {
object LocateProvider<ContractType>();
void RegisterProvider<ContractType>(object implementation);
}
, Module1, , ServiceLocator , , Module2 LocateProvider, , , Module1.
- :
public class Module1Implementation : IProviderContract {
void Foo GetFoo() { return new Foo(); }
}
public class Main {
public void Main() {
var locator = ServiceLocator.GetLocator();
locator.RegisterProvider<IFooProvider>(new Module1Implementation());
}
}
Module2.dll:
public class Consumer {
public IFooProvider FooProvider { get; set; }
public Consumer() {
var locator = ServiceLocator.GetLocator();
FooProvider = locator.LocateProvider<IFooProvider>();
}
}
"" DLL , 1 DLL, . ServiceLocator "", .
, , , , DLL, , Castle DynamicProxy Reflection. , , Google.: -)
? DLL, . , :
! , , .