2

データベースには、次のようにカンマ区切りの値を含む列があります。

Foo.Bars varchar(100): @;1,5

コードでは、 DTO に次のように List<string> が含まれています。

public class Foo { public List<string> Bars {get; set;} }

変換はペタポコさんにお願いしたいです。

インターフェイスについて読みましたIMapperが、使用方法の例が見つかりませんでした。
どうすれば望ましい結果を得ることができますか?

4

2 に答える 2

2

私が考える解決策は次のとおりです。

public class ListMapper : IMapper 
{
    public void GetTableInfo(Type t, TableInfo ti)
    {
    }

    public bool MapPropertyToColumn(PropertyInfo pi, ref string columnName, ref bool resultColumn)
    {
        return true;
    }

    public Func<object, object> GetFromDbConverter(PropertyInfo pi, Type sourceType)
    {
        return src => 
            {
                if (sourceType == typeof (string)
                    && pi.PropertyType == typeof (List<string>)
                    && src != null)
                {
                    return ((string) src).Split(';').ToList();
                }
                return src;
            };
    }

    public Func<object, object> GetToDbConverter(Type sourceType)
    {
        return null;
    }
}

Database.Mapper = new ListMapper(); // Mapper is a static property
于 2013-05-06T13:32:33.170 に答える