gpt4 book ai didi

c# - 注入(inject) 2.1 ActivationException : Error activating string

转载 作者:太空狗 更新时间:2023-10-29 20:32:13 25 4
gpt4 key购买 nike

我很困惑为什么我在随机绑定(bind)中收到“Ninject.ActivationException:错误激活字符串没有可用的匹配绑定(bind),并且该类型不可自绑定(bind)”。如果我保留 IMedia 的绑定(bind),它将抛出 ActivationException,但如果我使用 CallbackProvider,它会起作用。所有这些类的结构都相同,但具有一些不同的属性。我很困惑为什么 ILocationType、IMedia 和 IFarmDataContext 会抛出 ActivationException 而其他的则不会。有什么想法吗?

/******************************
* Core Types
******************************/
Bind<IFarmDataContext>().ToProvider(new CallbackProvider<IFarmDataContext>(delegate { return new FarmDataContext(); }));

//Media
Bind<IMedia>().To<Media>(); //blows up
//Bind<IMedia>().ToProvider(new CallbackProvider<IMedia>(delegate { return new Media(); }));
Bind<IMediaType>().To<MediaType>();
Bind<IMediaRelated>().To<MediaRelated>();

//Location
Bind<ILocation>().To<Location>();
Bind<ILocationType>().ToProvider(new CallbackProvider<ILocationType>(delegate { return new LocationType(); }));
Bind<ILocationDetail>().To<LocationDetail>();

最佳答案

Ninject 没有绑定(bind)要在 Media .ctor 中注入(inject)的“字符串键”;当它尝试创建依赖于 Media 的类型时,它不知道如何解决依赖关系并抛出。对于大多数类型,Ninject 会尝试为您创建一些东西,但是字符串和值类型不是可自绑定(bind)的,因为我们没有为它们提供好的默认值,并且它可能会对使用不同基元约定的类型造成严重破坏。

您需要在绑定(bind)中添加参数值 (.WithContructorArgument("key", someValue)) 或使用某种提供程序(您已完成)。

关于c# - 注入(inject) 2.1 ActivationException : Error activating string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com