Объекты, которые вы предоставляете в качестве аргументов в качестве части запроса на обслуживание, должны быть помечены [Serializable], и на основе некоторых ответов, опубликованных перед моим, также необходимо убедиться, что ваш пользовательский объект не содержит никаких параметров в конструкторе.
Также имейте в виду, что любая логика внутри вашего класса не будет создана в прокси-классе, который создается на стороне клиента. Все, что вы увидите на стороне клиента, это конструктор и свойства по умолчанию. Поэтому, если вы добавляете методы в свои пользовательские объекты, имейте в виду, что клиент не увидит их или не сможет их использовать.
То же самое относится к любой логике, которую вы можете поместить в любое из свойств.
Пример
[Serializable]
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}