ここではStackOverflowのcovariance and contravarianceにいくつかの素晴らしいリソースがありますが、私はcontravarianceの基本を誤解しているようです。クラスの暗黙の反差異 - 簡単に失敗した例
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
A a = new B();
B b = new A();
}
}
public class A
{
int id { get; set; }
}
public class B : A
{
}
Bに設定する共分散であるが、新しいAにBを設定すると、コンパイルエラーで失敗した、作品:私は、この例が動作することを期待します。明示的キャストを行っても、コンパイル時にエラーが発生します。これを行う方法はありますか、あるいは私は反共分散を完全に誤解していますか?
これをクリアしていただきありがとうございます。それで、Bに文字列タイトルがあるとしましょう。私はAからBまでのすべてのメンバーを割り当ててから、別々にタイトルを割り当てたいと思います。明示的にすべてのプロパティを個別に割り当てることに加えて、ショートカットはありますか?それが私の実際の後のすべてです。 – DougJones
@Doug - AutoMapper maybe?同様のモデル間で変更するためにシリアル化ラウンドトリップを使用することも知られていませんが、AutoMapperはおそらく最も簡単なオプションです。 –
素晴らしい... AutoMapperプロジェクトについて聞いたことがありませんでした。それは私の効率化に役立ちますが、暗黙のキャストが機能し、実行時の効率を維持すると考えていました。とにかく、今私は知っている...再び感謝します。 – DougJones