解析类型而不创建对象
问题描述:
以下是我的问题:我有一个容器,它将具体类型注册为接口。解析类型而不创建对象
builder.RegisterType<DeleteOrganization>().As<IDeleteOrganization>();
我执行序列化的项目我做和BindToType的方法,我需要实现我想要返回一个类型对象SerializationBinder。 BindToType方法为我提供了一个assemblyName和typeName(两个字符串)来帮助我创建一个类型对象。我想要做的是如果typeName是一个接口,我想问Autofac什么具体的实现类型是为该接口类型没有实际拥有它创建该对象。那可能吗?
答
如果您使用RegisterType注册您的服务,这是可能的。我写了一个快速测试,可以帮助您提取所需的数据。
private interface IDeleteOrganization
{
}
private class DeleteOrganization : IDeleteOrganization
{
}
[TestMethod]
public void CanResolveConcreteType()
{
var builder = new ContainerBuilder();
builder.RegisterType()
.As();
using(var container = builder.Build())
{
var registration = container.ComponentRegistry
.RegistrationsFor(new TypedService(typeof (IDeleteOrganization)))
.SingleOrDefault();
if (registration != null)
{
var activator = registration.Activator as ReflectionActivator;
if (activator != null)
{
//we can get the type
var type = activator.LimitType;
Assert.AreEqual(type, typeof (DeleteOrganization));
}
}
}
}