私は2種類あります:BaseQuestion
とQuestion
です。 Question
は、BaseQuestion
からいくつかのプロパティを継承します。今私はBaseQuestion
を利用できるようにするWeb APIを作成しました。 Question
データ型には、追加できないプロパティがあります。 Question
を取得するメソッドがあり、私の初期の計画は暗黙的にそれをBaseQuestion
にアップキャストすることでした。私はそれが私がアクセス可能にしたくない、それを返すことができるすべての追加プロパティを失うと思った。 まあ、そうではありません。これは私が行うことです:C#:スーパークラスはアップキャスト後にサブクラス情報を持っています
Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
bqのタイプはまだ "質問"です。私はBaseQuestionのプロパティにアクセスすることはできませんが、私はまだデバッガでそれらを見ることができ、クライアントに送るJSON出力にあります。
私はどのようにしてbqをタイプBaseQuestion
にすることができ、サブクラスで定義されているプロパティは持たないかについてのアイデアはありますか?
変数BQのタイプはBaseQuestionです。 bqが参照するオブジェクトの実行時の型はQuestionです。 "bqがBaseQuestion型であることを強制する"という意味がわからない変数bqを介してのみBaseQuestionメンバーにアクセスすることができます。 – lesscode
私はあなたの混乱は、あなたが与えたことがメモリ内のオブジェクトへの参照**であることを理解していないと思います。 –
サイモン、良い点。それでは、質問をタイプして新しいオブジェクトを作成し、すべてのプロパティ値を自動的にコピーするにはどうすればいいですか?自動的に私はそれを実装したくない**ことを意味します。 IMHOこのシナリオは私の状況に固有のものではなく、.NETでカバーする必要があります。 – Jan