カスタムモデルバインディングなしでこれを処理する方法はありますか?ASP.NET MVC 4 ViewModel with Child Interface
public class MyViewModel {
public string UserId { get; set; }
public IJob Job { get; set; }
}
public interface IJob {
public long Id { get; set; }
public string CompanyName { get; set; }
}
public class FullTimeJob : IJob {
// omitted for brevity
}
public class Internship : IJob {
// omitted for brevity
}
私がいる問題は、それがインスタンス化するIJobのどの実装を理解していないので、私は、デフォルトのモデルバインダーにエラーが発生しますです。 MyViewModelを作成したら、FullTimeJobのインスタンスをJobプロパティに設定しました。 ASP.NETは実装タイプを保持できないと思いますか?
このためのベストプラクティスソリューションは何ですか?
私はオブジェクト階層を維持できるようにしたいので、仕事関連のフィールドを直接ビューモデルに置くことを避けたいと思います。私がそれをしているなら、ViewModelは私に何も買っていない。 –
そうですね、私はカスタムモデルのバインダーでそれを行いましたが、それほどカスタムレスではないと思っていました。 –
ViewModelを 'class MyViewModel T:IJob、new()'のようなものにすることができます。コンストラクタでカスタムジョブタイプ 'Job = new T();'をインスタンス化できます。 –