Slapper & Dapper 사전 지원

.net automapper c# dapper slapper.automapper

문제

Dapper 데이터를 객체에 매핑하려고합니다. 그러나 Dictionary 객체에 매핑하는 동안 문제가 발생했습니다.

요구 사항은 데이터 행을 객체에 매핑하는 것입니다.

데이터 행

1 | Key1 | Value1

1 | Key2 | Value2

예상 값

Id -> 1

데이터 - {{"Key1","Value1" }, { "Key2","Value2"}}

지도 코드 :

        IDictionary<string, object> entity = new Dictionary<string, object>();
        entity.Add("Id", "1");
        entity.Add("Data_Key", new List<string>() { "Key1", "Key2" });
        entity.Add("Data_Value", new List<string>() { "Value1", "Value2" });
        var result=Slapper.AutoMapper.Map<TestEntity>(entity);

개체 개체

public class TestEntity
{
    public int Id { get; set; }
    public Dictionary<string,string> Data { get; set; }
}

이것을 달성하는 방법이 있습니까 ??

인기 답변

다른 사용자가 언급했듯이, Slapper.Automapper를 통해이를 달성하는 것은 불가능합니다.

하지만, 그것을 달성하기위한 해결 방법을 찾았습니다.

JSON String을 받아들이고 Dictionary 객체를 반환하는 TypeConverter를 만들었습니다.

public class DictionaryConverter : ITypeConverter
{
    public int Order => 110;

    public bool CanConvert(object value, Type type)
    {
        // Handle Nullable types
        var conversionType = Nullable.GetUnderlyingType(type) ?? type;
        //Check if Type is a Dictionary
        return conversionType.IsGenericType && conversionType.GetGenericTypeDefinition() == typeof(Dictionary<,>);
    }

    public object Convert(object value, Type type)
    {
        // Handle Nullable types
        var conversionType = Nullable.GetUnderlyingType(type) ?? type;
        //Create Empty Instance
        object result = Activator.CreateInstance(type);
        if (value != null)
        {
            try
            {
                result = JsonConvert.DeserializeObject(value as string, type);
            }
            catch (JsonException ex)
            {
                throw new Exception("Invalid JSON String while Converting to Dictionary Object", ex);
            }
        }
        return result;
    }
}


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow