首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autofac和WithMetadata

Autofac和WithMetadata
EN

Stack Overflow用户
提问于 2010-11-09 16:59:57
回答 1查看 233关注 0票数 1

我正在试着做这样的事情。但是,WithMetadata方法不允许我这样做。

这是Autofac中的一个问题吗? WithMetadata重载中的TScanningActivatorData应该改为TActivatorData吗?或者我处理这个问题的方式是错误的吗?

代码语言:javascript
复制
builder.RegisterType(myType).As<IMyType().AsSelf().WithMetadata("somekey", delegate(Type t)
                {
                   //dosomething
                    return t;
                });

这给出了关于WithMetadata方法的错误:The type 'Autofac.Builder.ConcreteReflectionActivatorData' cannot be used as type parameter 'TScanningActivatorData' in the generic type or method 'Autofac.RegistrationExtensions.WithMetadata<TLimit,TScanningActivatorData,TRegistrationStyle>(Autofac.Builder.IRegistrationBuilder<TLimit,TScanningActivatorData,TRegistrationStyle>, string, System.Func<System.Type,object>)'. There is no implicit reference conversion from 'Autofac.Builder.ConcreteReflectionActivatorData' to 'Autofac.Features.Scanning.ScanningActivatorData'.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-10 07:35:14

对于您试图实现的目标,有一个更合适的重载。传递给委托的t参数与myType相同,因此等效代码为:

代码语言:javascript
复制
var someValue = DoSomething(myType);
builder.RegisterType(myType)
    .As<IMyType>()
    .AsSelf()
    .WithMetadata("somekey", someValue);

您一直在查看的重载是用于扫描注册,例如,使用RegisterAssemblyTypes()而不是RegisterType()时。

希望这能有所帮助。尼克

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4131921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档