デフォルトのパブリックコンストラクターを持つクラスを作成する方法を探していますが、リフレクション以外での使用は禁止されています。
より詳細には、オブジェクトがそのようなパブリックデフォルトコンストラクターを実装することを要求するオブジェクト永続化フレームワーク(AWS DynamoDB-変更するオプションがありません)を使用しています。フレームワークでは、すべての永続化されたフィールドとプロパティにもパブリックgetおよびsetアクセサーが必要であり、新しいオブジェクトインスタンスを作成および初期化するときにそれらを使用します。アクセサーは2つの目的を果たす必要があるため、これは問題につながります。フレームワークで使用する場合は「ベア」である必要がありますが、コードで使用する場合は制限と検証を適用します。いずれにせよ、私はその部分を解決しましたが、デフォルトのコンストラクター(永続化フレームワークが使用するコンストラクター)を使用して永続化されたオブジェクトをコードで構築できないようにすることに依存しています。
元の質問に戻る-これをすべて機能させるには、永続性フレームワーク(空のパブリックコンストラクターのみを検索する)で使用できるようにしながら、コードがデフォルトコンストラクターを使用することを禁止する必要があります。静的フラグを使用して、潜在的なオブジェクトの永続性の使用の前後に設定し、デフォルトのコンストラクターが設定されていない場合は例外をスローすることから始めましたが、これによりマルチスレッド環境(Webサーバー)で問題が発生し始めました)。1つのスレッドは、他のスレッドで使用するためにコンストラクターを開く永続性フレームワークで使用するためにそれを設定します。ThreadStaticフラグも試しましたが、ワーカースレッドが生成されることがあるため、フレームワークによる構築を妨げるという逆の問題がありました。
今、私は実際にこれを行う方法があるかどうか疑問に思っています。この時点で、それは要件というよりも好奇心になりました。「このコンストラクターは使用しないでください」というコメントはいつでも書くことができますが、ルールを直接適用することで気分が良くなります。以前にPostSharpを使用したことがありますが、コンパイル時の検証にアスペクトを使用して、コードベースのデフォルトコンストラクターの使用を防ぐ方法はありますか?他に何か提案はありますか?