Теоретически да, хотя вы должны сообщить службе, что она может ожидать объект Person, используя KnownTypeAttribute в вашем методе.
[OperationContract]
[KnownType(typeof(Person))]
List<object> GetAnyClass();
Я действительно дважды подумал бы о том, чтобы сделать это на практике - вместо этого объявлять разные сигнатуры методов для объектов, которые вы ожидаете вернуть:
[OperationContract]
IList<Person> GetPeople();
[OperationContract]
Person GetPerson();
[OperationContract]
IList<Book> GetBooks();
[OperationContract]
Book GetBook();
и т.д.
Предполагается, что это будет контракт, то есть конкретный, так что, если вы вдруг измените тип возвращаемого класса, это действительно может испортить клиентов.
Также в вашем примере вы возвращали конкретный класс List
- этого следует избегать, вместо этого используйте IList<>
или Collection<>
.