0

これは私のモデル階層です:

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 -> INodeModel1 NodeDto`1[[System.Int32] ->

INodeModel`1[[System.Int32]

メッセージ:

インターフェイスに競合するプロパティ ID パラメータ名があります: interfaceType

スタック:

AutoMapper.Internal.ProxyGenerator で。CreateProxyType (タイプ interfaceType)

AutoMapper.Internal.ProxyGenerator で。GetProxyType (タイプ interfaceType)

AutoMapper.MappingEngine で。CreateObject (ResolutionContext コンテキスト)

4

1 に答える 1