1

Web API コントローラーにメソッドがあります。

[HttpPost]
public void Post([FromBody]Registration registration)
{
    // omitted
}

メソッドを呼び出すことはできますが、パラメーターは常に null です。登録クラスは次のように定義されます。

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; }
}

インターフェースである Registration の Student プロパティがこれを引き起こしているようです。これを具体的な型に置き換えようとすると、うまくバインドされるからです。

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

4

1 に答える 1

0

可能ですが、追加のコーディングを行う必要があります。例はここに実装されています:

具体的なクラスの代わりにインターフェイスを使用した ASP.NET Web API 操作

おそらく、この余分なコードを実行したくないでしょう。バグが発生する可能性があります。POCO/DTO を作成し、Automapper を使用してビジネス ドメイン モデルを POCO/DTO にマッピングできます。

于 2016-05-09T14:06:00.880 に答える