c#将ninject特定绑定转换为autofac

时间:2017-03-27 02:05:57

标签: c# ninject autofac

我有两个问题,就是将绑定从ninject转换为autofac。

第一个是:

G

,第二个是:

Bind<IMapper>().ToConstant(new Container().Mapper);

愿你伸出援手吗?

谢谢

1 个答案:

答案 0 :(得分:3)

第一个:

builder
    .RegisterInstance(new Container().Mapper)
    .As<IMapper>();

对于第二个:

// First option, with a parameter
builder
    .RegisterType<Context>()
    .AsSelf()
    .WithParameter(
        (parameter, context) => parameter.Name == CONNECTION_STRING,
        (parameter, context) => context.Resolve<IUserDatabase>().ConnectionString));

// Second option, with a lambda
builder
    .Register(x => new Context(x.Resolve<IUserDatabase>().ConnectionString))
    .AsSelf();

我更喜欢第二个选项,因为你对Context类的构造函数进行了静态检查,但如果你有很多参数,那么维护它会很麻烦。

我建议您阅读this tweet链接的文章。它讨论了如何使用原语作为构造函数参数使我们的生活变得更加困难以及如何解决它。