2

クラスで定義した DBParameters をシリアライズしようとしています。

シリアライズに変換しようとすると、次のエラーが発生します。

「XmlInclude または SoapInclude 属性を使用して、静的に認識されていない型を指定します。」

ここに私のコードがあります

[Serializable]
public class DemoClass{
public List<DbParameter> Parameters { get; set; }
}

この問題を解決するのを手伝ってくれる人はいますか? Parameters プロパティをシリアル化するにはどうすればよいですか?

ありがとう

4

1 に答える 1

2

DbParameterシリアル化には適していません。

まず、それが抽象基本クラスであるという問題があるため、ほとんどのシリアライザー (を含むXmlSerializer) では、予想される具象サブクラスを事前に正式にアドバタイズする必要があります-これを必要としないものは通常、[Serializable]代わりに必要になります-そうではありません。

2 番目の (おそらくより重要な) 問題は、それが実装であることです(基本的に ADO.NET に結び付けられています) 。

シリアライゼーションの目的で独自の DTO モデルを作成することを強くお勧めします。これは、たとえば、知っておく必要があることに焦点を当てており、最も明白なことですが、重要でもあります。独自のモデルをシリアライズします。これにより、両方の問題が解決されます。NameValueDataTypeDirection

3 つ目の問題は、そもそもパラメーターをシリアル化する目的を疑問視することです。これがRPCの目的である場合は、任意のSQLホールを開いているように聞こえるため、強くお勧めしません. RPC の場合は、サービス境界の一部としてパラメーター/引数を定義して渡すだけです。

于 2013-10-09T08:37:56.793 に答える