RIA / Domain Services¶
Domain Services integration requires the Autofac.Extras.DomainServices NuGet package.
Quick Start¶
To get Autofac integrated with RIA/domain services app you need to reference the Domain Services integration NuGet package, register services, and register the integration module.
public class Global : HttpApplication, IContainerProviderAccessor
{
// The IContainerProviderAccessor and IContainerProvider
// interfaces are part of the web integration and are used
// for registering/resolving dependencies on a per-request
// basis.
private static IContainerProvider _containerProvider;
public IContainerProvider ContainerProvider
{
get { return _containerProvider; }
}
protected void Application_Start(object sender, EventArgs e)
{
var builder = new ContainerBuilder();
// Register your domain services.
builder
.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AssignableTo<DomainService>();
// Add the RIA Services module so the "Initialize"
// method gets called on your resolved services.
builder.RegisterModule<AutofacDomainServiceModule>();
// Build the container and set the container provider
// as in standard web integration.
var container = builder.Build();
_containerProvider = new ContainerProvider(container);
// Replace the DomainService.Factory with
// AutofacDomainServiceFactory so things get resolved.
var factory = new AutofacDomainServiceFactory(_containerProvider);
DomainService.Factory = factory;
}
}
When you write your domain services, use constructor injection and other standard patterns just like any other Autofac/IoC usage.
Example¶
The Autofac examples repository (at tag 3.5.2
) has a Domain Services project that is consumed by a Silverlight application.