I tried to create a method in a **ApiController** that looks like this:

```
public DemoList<Demo> GetAll()
{
    var result = new DemoList<Demo>() { new Demo(){Y=2}, new Demo(), new Demo(){Y=1} };
    result.Name = "Test";
    return result;
}

```

Demo and DemoList look like this:

```
public interface INamedEnumerable<out T> : IEnumerable<T>
{
    string Name { get; set; }
}

public class Demo
{
    public int X { get { return 3; } }
    public int Y { get; set; }
}

public class DemoList<T> : List<T>, INamedEnumerable<T>
{
    public DemoList()
    {
    }

    public string Name { get; set; } 
}

```

I then cheked the ouput with fiddler 

```
GET http://localhost:8086/api/Demo

```

and got the following:

**XML** (Accept header set to application/xml)

`<ArrayOfDemo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/XXX.WebAPI"><Demo><Y>2</Y></Demo><Demo><Y>0</Y></Demo><Demo><Y>1</Y></Demo></ArrayOfDemo>`

JSON (Accept header set to application/json)

`[{"X":3,"Y":2},{"X":3,"Y":0},{"X":3,"Y":1}]`

My question is quite simple: Why is the X variable not serialized with the XML version (I thought that readonly properties were serialized) **and more important, why in both cases is the `Name` property (which is writable) not serialized??**
What are the alternatives to make this work like I expected?

*Edit: 
Please, note that I'm in a WebAPI context! By default, the XmlSerializer is automatically set to XmlMediaTypeFormatter and the JSONSerializer to JsonMediaTypeFormatter*