2016-05-09 3 views
0

あるとき結合パラメータは動作しません。常にnullです。登録クラスは次のように定義されますASP.NETコアのWeb APIは、クラスのメンバーは、私は私のウェブAPIコントローラにメソッドを持つインターフェイス

public class Registration 
{ 
    public int Id { get; set; } 
    public IStudent Student { get; set; } 
} 

public interface IStudent 
{ 
    string FirstName { get; set; } 
    string LastName { get; set; } 
} 

public class Student : IStudent 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

インターフェースという登録の学生プロパティは、私は具体的なタイプと交換しようとすると、それだけで罰金結合するので、これを引き起こしているものであるようです。

インターフェイスの使用時にこのバインドを行うにはどうすればよいですか。また、私の元のWeb API上で、私は登録型のパラメータを受け入れています。インターフェイス(IRegistration)としてこれを作ることも可能ですか?まだバインドしていますか?

+4

インターフェイスはモデルバインディングでどのような目的を持っていますか? .NETはクラスのインスタンス化しかできないため、インターフェイスの実装はどのクラスを使用するべきですか? – CodeCaster

+0

@CodeCaster:古いWeb APIには、https://brettedotnet.wordpress.com/2014/07/16/web-ap-and-interface-parameters/のようないくつかの回避策があります。 Web APIコアでできることがあるかどうかを知りたかったのです。 –

+0

独自のjson入力フォーマッタを書くことができます。( 'IInputFormatter'を実装してmvcオプションに登録してください:' options.InputFormatters.Insert(0、new MyJsonInputFormatter()); ' – Tseng

答えて

0

追加のコーディングが必要ですが、例はここにimplemetedさ:おそらく、この余分なコードを行うにはしたくない

ASP.NET Web API Operation with interfaces instead concrete class

。それはバギーを得ることができます。 POCO/DTOを作成し、Automapperを使用してビジネスドメインモデルをPOCO/DTOにマッピングすることができます。

関連する問題