0
我试图使用Autofac自动编写我的应用程序。一切都很好除了事实上,我有一个抽象的泛型类型,如:Get Autofac返回通用抽象而不是它的具体类
public abstract class Transformer<TModel>
{
// Some abstract methods
}
有了它实现为:
public class EventTransformer : Transformer<Event>
{
// implementation of methods
}
我自动装配了应用程序:
builder.RegisterAssemblyTypes(typeof (MyAssemblyName).Assembly)
.InstancePerLifetimeScope();
Autofac将在解析此类类别时引发错误:
public class RandomClass<TModel>
{
public RandomClass(Transformer<TModel> transformer()
{
// Constructor code
}
}
我得到下面的错误(简化)。我可以手动注册EventTransformer作为Transformer < Event>,一切工作正常,但我不想手动注册它,我应该可以自动完成它,所以我可以简单地创建一个新类,它直接进入应用。
The requested service Transformer`1[[Event]]' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency.
我没有尝试和注册类时使用方法.AsImplementedInterfaces(),但它似乎没有工作。
那么我该怎么做才能做到这一点?同样对于奖励积分,我无法知道Autofac正在注册什么,以及它是如何注册的。有没有这样做?
美丽,谢谢。 – 2012-02-03 10:05:58