Я думаю, вы неправильно понимаете причину контракта на сообщения и как его использовать. Ознакомьтесь с документацией MSDN по Использование контрактов сообщений для более подробного обсуждения.
Контракт сообщения позволяет вам определить макет вашего сообщения с заголовком (заголовками) и элементами тела. Это могут быть атомарные типы, такие как string или int, и если нет, вам нужно определить составные типы как классы.
Те составные части (классы), которые вы используете в этом сообщении, должны быть помечены как [DataContract]
с [DataMember]
атрибутами в отдельных полях, которые вы хотите сериализовать.
Кроме того, ваш контракт на передачу сообщений и контракт на передачу данных никогда не должен содержать никаких функций и всего, что должно быть выполнено. Структуры данных будут сериализованы только как данные, любое поведение будет потеряно при передаче.
Так что в вашем случае вы должны попробовать:
[MessageContract()]
public class Response
{
private List<ObjectInfo> m_MyListOfObjects = new List<ObjectInfo>();
[MessageBodyMember(Name = "ObjectsInfo")]
public List<ObjectInfo> MyListOfObjects
{
get { return m_MyListOfObjects; }
set { m_MyListOfObjects = value; }
}
}
[DataContract]
public class ObjectInfo
{
[DataMember(Name = "Name")]
public string m_Name;
}