Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类中映射相同的对象类型属性将调用Equals和GetHashCode_C#_Automapper - Fatal编程技术网

C# 在类中映射相同的对象类型属性将调用Equals和GetHashCode

C# 在类中映射相同的对象类型属性将调用Equals和GetHashCode,c#,automapper,C#,Automapper,我有这门课 public class ConflictItem<T> where T : new() { public T CurrentItem { get; set; } public T RequestedUpdateItem { get; set; } } 我理解当列表中的对象相等或两个对象之间相等时,为什么Automapper会为另一个对象中的两个不同属性匹配相等?是否有任何方法可以通过配置覆盖此行为?库似乎添加了禁用缓存的

我有这门课

public class ConflictItem<T> where T : new()
    {
        public T CurrentItem { get; set; }
        public T RequestedUpdateItem { get; set; }
    }

我理解当列表中的对象相等或两个对象之间相等时,为什么Automapper会为另一个对象中的两个不同属性匹配相等?是否有任何方法可以通过配置覆盖此行为?

库似乎添加了禁用缓存的选项,作为映射方法上的一个选项:

var output = Mapper.Map<T1, T2>(input, opt => opt.DisableCache = true);
var output=Mapper.Map(输入,opt=>opt.DisableCache=true);
尝试一下,看看它是否解决了你的问题

我一直在关注GitHub上的5.0测试版,似乎他们可能会在默认情况下禁用此缓存:


这不仅仅是基础集合本身吗?我用这个问题更新了问题,我最终在两个属性中接收到一个具有相同对象实例的ConflictItem。调用
Equals
如何导致这两个属性发生更改?我怀疑您实际上有一个糟糕的映射配置。你能展示一下你是如何映射的,以及你在哪里看到调用了
Equals
吗?我知道这太奇怪了,我也不能解释它,但是我在类中的Equals overiden实现中设置了一个断点进行了验证。添加了配置。这是同样的问题。这里可能是:可怕的行为。投票最多的解决方案也非常糟糕。在最新的Nuget软件包版本中,默认缓存行为似乎发生了更改。
var output = Mapper.Map<T1, T2>(input, opt => opt.DisableCache = true);