[解決済み] XMLシリアライズ可能なクラスがパラメータなしのコンストラクタを必要とする理由
質問
Xmlのシリアライズを行うためのコードを書いています。以下の関数を使っています。
public static string SerializeToXml(object obj)
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, obj);
return writer.ToString();
}
}
引数がパラメータなしコンストラクタを持たないクラスのインスタンスの場合、例外がスローされます。
<ブロッククオート未処理の例外です。 System.InvalidOperationException: CSharpConsole.Fooはシリアライズできません。 を持たないので パラメータレスコンストラクタ System.Xml.Serialization.TypeDesc.CheckSupported()を実行する。 で System.Xml.Serialization.TypeScope.GetTypeDesc(タイプ type, MemberInfo source e, Boolean directReference, Boolean throwOnError) で System.Xml.Serialization.ModelScope.GetTypeModel(タイプ type, Boolean direct Reference) at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(タイプ タイプ , XmlRootAttribute ルート, String defaultNamespace) at System.Xml.Serialization.XmlSerializer.ctor(Type type, String defaultName space) at System.Xml.Serialization.XmlSerializer.ctor(Type) タイプ)
xmlシリアライズを成功させるために、なぜパラメータなしのコンストラクタが必要なのですか?
EDIT: cfedukeさんの回答ありがとうございます。パラメータレスコンストラクタは、プライベートでも内部でも構いません。
どのように解決するのですか?
オブジェクトのデシリアライズの際、デシリアライズを担当するクラスは、シリアライズされたクラスのインスタンスを作成し、入力するインスタンスを取得してからシリアライズされたフィールドとプロパティに入力を進めます。
コンストラクタを
private
または
internal
というように、パラメータレスで記述します。
関連
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み】Nullableオブジェクトは値を持たなければならない?