C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – Automapper Custom Resolver – 将Repository注入构造函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为automapper创建一个自定义解析器,它需要访问我的一个数据存储库来检索登录用户帐户.

这是我到目前为止的代码……

public class FollowingResolver : ValueResolver<Audio,bool>
    {
        readonly IIdentityTasks identityTasks;

        public FollowingResolver(IIdentityTasks identitTasks)
        {
            this.identityTasks = identitTasks;
        }

        protected override bool ResolveCore(Audio sourcE)
        {
            var user = identityTasks.GetCurrentIdentity();
            if (user != null)
                return user.IsFollowingUser(source.DJAccount);

            return false;
        }
    }

但是我收到此错误

FollowingResolver' does not have a default constructor

我尝试添加一个认的contrstructor,但我的存储库永远不会被初始化.

这是我的autoampper初始化代码

public static void Configure(IWindsorContainer container)
        {
            Mapper.Reset();
            Mapper.Initialize(x =>
            {
                x.AddProfile<AccountProfile>();
                x.AddProfile<AudioProfile>();
                x.ConstructservicesUsing(container.ResolvE);
            });

            Mapper.AssertConfigurationIsValid();
        }

我错过了什么,甚至可能这样做,还是我错过了这里的船?

解决方法

在尝试注入服务时,使用Castle Windsor时遇到了同样的错误.

我不得不补充:

@H_626_9@mapper.Initialize(map => { map.ConstructservicesUsing(_container.ResolvE); });

在Mapper.CreateMap@L_262_18@之前.

像这样创建了一个ValueResolverInstaller:

public class ValueResolverInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container,IConfigurationStore storE)
    {
        container.Register(Classes.FromThisAssembly()
                                .basedOn<IValueResolver>()
                                .LifestyleTransient());
    }
}

和ValueResolver本身:

public class DivergencesResolver : ValueResolver<MyClass,int>
{
    private Assessmentservice assessmentservice;

    public DivergencesResolver(Assessmentservice assessmentservicE)
    {
        this.assessmentservice = assessmentservice;
    }

    protected overridE int ResolveCore(MyClass C)
    {
        return assessmentservice.GetAssessmentDivergences(c.AssessmentId).Count();
    }
}

大佬总结

以上是大佬教程为你收集整理的c# – Automapper Custom Resolver – 将Repository注入构造函数全部内容,希望文章能够帮你解决c# – Automapper Custom Resolver – 将Repository注入构造函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。