2

チュートリアルに従ってアプリを作成しようとしています。書籍のリストを取得する Get リクエストを作成しようとしています。これは私のコントローラーです:

public class BooksController : ApiController
{
    Book[] books = new Book[] 
    {
        new Book(1, "Alice In Wonderland"), 
        new Book(2, "Dune"), 
        new Book(3, "Lord of the Rings")
    };

    public IEnumerable<Book> Get()
    {
        return books;
    }
...

そして、これは私のモデルです:

public class Book
{
    public Book()
    {
    }

    public Book(int id, string name)
    {
        id = this.id;
        name = this.name;
    }

    public int id { get; set; }
    public string name { get; set; }
}

空のコンストラクターを使用する前は、シリアル化エラーがスローされていました。空のデータを返すようになりました:

<ArrayOfBook xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/WebApplication1.Model">
    <Book>
        <id>0</id>
        <name i:nil="true"/>
    </Book>
    <Book>
        <id>0</id>
        <name i:nil="true"/>
    </Book>
    <Book>
        <id>0</id>
        <name i:nil="true"/>
    </Book>
</ArrayOfBook>

コントローラーにブレークポイントを設定しようとしましたがreturn books、リストはハードコードしたものではありません。3 つの空の本のオブジェクトです。

[Serializable] を Book クラスに追加して、空のコンストラクターを削除しようとしましたが、空の本のセットを返すだけです。何が起こっているのですか?

ありがとう

4

2 に答える 2

1

Book クラスのコンストラクターに間違った割り当てステートメントがあります

public Book(int id, string name)
{
    id = this.id; // reverse this assignment, and the next line as well
    name = this.name;
}

これと交換

public Book(int id, string name)
{
    this.id = id; // this is the correct way
    this.name = name;
}
于 2013-11-09T19:47:37.243 に答える