文字列のカスタム型への大まかな変換

c# dapper

質問

AdviceIdというクラスがあり、これは文字列への暗黙的な変換をサポートしています。また、クラスのToString()メソッドをオーバーライドして、このメソッドが呼び出されるたびに正しい文字列出力が返されるようにしました。

私のアプリケーションはDapperを使用してデータを保持します。以前はAdviceIdsは永続化されて文字列として取得されていましたが、代わりに特定の型を使用しようとしました。ただし、これは失敗します。文字列とAdviceId型の暗黙の変換を使用するようにDapperに指示する特別なやり方はありますか?

UPDATE私はDapperにSqlMapperに型マップを追加してAdviceIdのインスタンスを文字列として挿入するようにしました

SqlMapper.AddTypeMap(typeof(AdviceId), DbType.String);

AdviceIdにIConvertibleを実装させることによって、しかし、私はdbから、AdviceIdのインスタンスに戻って文字列を変換する運がなかった。

人気のある回答

マークが追加のように見えます2014年6月に 、あなたが呼び出すことができるAddTypeMapの独自の実装でSqlMapper.TypeHandler<AdviceId>私は経由で見つかったこのブログが、マルクもブログに書いここに

public class AdviceIdTypeHandler : SqlMapper.TypeHandler<AdviceId>
{
    public override void SetValue(IDbDataParameter parameter, AdviceId value)
    {
        parameter.Value = value.ToString();
    }

    public override AdviceId Parse(object value)
    {
        return new AdviceId((string)value);
    }
}

SqlMapper.AddTypeHandler(new AdviceIdTypeHandler());


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow