これは私のモデル階層構造である:は矛盾するプロパティIDパラメータ名を持っていますInterfaceTypeは
public interface INodeModel<T> : INodeModel
where T : struct
{
new T? ID { get; set; }
}
public interface INodeModel
{
object ID { get; set; }
string Name { get; set; }
}
public class NodeModel<T> : INodeModel<T>
where T : struct
{
public T? ID { get; set; }
public string Name { get; set; }
object INodeModel.ID
{
get
{
return ID;
}
set
{
ID = value as T?;
}
}
}
public class NodeDto<T> where T : struct
{
public T? ID { get; set; }
public string Name { get; set; }
}
、これらは私のマッピングとテストです:
class Program
{
private static MapperConfiguration _mapperConfiguration;
static void Main(string[] args)
{
_mapperConfiguration = new MapperConfiguration(cfg =>
{
cfg.CreateMap(typeof(NodeDto<>), typeof(NodeModel<>));
cfg.CreateMap(typeof(NodeDto<>), typeof(INodeModel<>));
cfg.CreateMap(typeof(INodeModel<>), typeof(NodeModel<>));
});
var dto = new NodeDto<int> { ID = 1, Name = "Hi" };
var obj = _mapperConfiguration.CreateMapper().Map<INodeModel<int>>(dto);
Console.Write(obj.ID);
Console.ReadLine();
}
}
、ここでは例外です:
AutoMapper.AutoMapperMappingException:
マッピングタイプ:
NodeDto 1 -> INodeModel
1 NodeDto`1 [可能System.Int32] - >
INodeModel`1 [可能System.Int32]
メッセージ:
インターフェイスを有しています競合するプロパティIDパラメータ名:interfaceType
スタック:
AutoMapper.Internal.ProxyGeneratorでCreateProxyType(タイプInterfaceTypeは)
AutoMapper.Internal.ProxyGeneratorで。 AutoMapper.MappingEngineでGetProxyType(タイプInterfaceTypeは)
。 CreateObject(ResolutionContextコンテキスト)