2

私は今日、あることにつまずいた。以下は私のサンプルクラスです。

public class Employee
{
public string Name{get;set;}
Public Department Dept {get;set;}
public IList<Roles> Roles;
}

public Department{
public string Name{get;set;}
}

public Role {
public string Name{get;set;}
}


 sampleApiController : ApiContrller{
 public IEnumerable<string> Get(){
 return new List<string>{"Pavan", "Josyula"};
}
public Employee GetEmp(int id){

Employee e = new Employee();
e.Dept = "IT";
e.Name="Pav";
IList<Roles> r = new IListRoles();
r.Add(new Role{Name="Integrator"});
e.Roles = r;
return e;

  }
}

ブラウザからこの GetEmp メソッドを呼び出すと、AcceptHeaders のコンテンツ タイプに関係なく、常に JSON 形式で応答が返されます。しかし、Get メソッドを呼び出すと、XML 形式の文字列のコレクションが返され、リクエスト ヘッダーの Accept 動詞に基づいて動作します。カスタムタイプのこのデフォルトの JSON 動作の理由を教えてください。

4

1 に答える 1

3

これは、XmlSerializerがシリアル化できないためIList<T>です。詳細については、以下の回答をお読みください。

于 2012-04-30T06:41:27.603 に答える