C# 自动映射和隐式算子-无限循环

C# 自动映射和隐式算子-无限循环,c#,automapper,C#,Automapper,我有viewModel类和boClass,我想把viewModel对象传递给一个接受boClass对象的方法。因此,我决定使用隐式运算符,正如您在示例中看到的那样 public class MyClassViewModel { public string Subject { get; set; } [Required] public string Message { get; set; } public sta

我有viewModel类和boClass,我想把viewModel对象传递给一个接受boClass对象的方法。因此,我决定使用隐式运算符,正如您在示例中看到的那样

    public class MyClassViewModel
    {

        public string Subject { get; set; }

        [Required]
        public string Message { get; set; }

        public static implicit operator MyClassBO(MyClassViewModel vm)
        {
            return Mapper.Map<MyClassBO>(vm);
        }
    }

    public class MyClassBO
    {

        public string Subject { get; set; }

        public string Message { get; set; }

    }
公共类MyClassViewModel
{
公共字符串主题{get;set;}
[必需]
公共字符串消息{get;set;}
公共静态隐式运算符MyClassBO(MyClassViewModel vm)
{
返回Mapper.Map(vm);
}
}
公共类MyClassBO
{
公共字符串主题{get;set;}
公共字符串消息{get;set;}
}
我在隐式操作符方法中使用AutoMapper。如果向配置中添加
cfg.CreateMap()
,效果会很好

如果我不这么做,automapper,出于某种原因,再次调用隐式操作符方法,我将得到automapper和隐式操作符方法的无限循环

我的问题是:

  • 为什么会发生这种情况?我该如何解决?如果我忘记使用CreateMap,我不想使服务器崩溃

  • 如果CreateMap是解决此问题的唯一方法,那么是否有一个选项仅为我的AutoMaper配置文件中不存在的类组合添加CreateMap


  • 看起来AutoMapper将在尝试使用反射实现它的魔力之前查找隐式强制转换。所以,要么不要在隐式操作符中使用AutoMapper,要么只使用AutoMapper而不是隐式cast。为什么要坚持使用糟糕的设计,并且必须为其找到解决方法?