Первое, что я хотел бы решить, прежде чем даже думать о направлении ничего, что вы реорганизовать этот класс в более управляемые подкомпоненты. Например, такие свойства, как DeliveryNote
, DeliveryNoteId
, DeliveryNoteSerial
могут быть размещены в классе Delivery
. То же самое можно сказать и о Group
, Payback
и других аналогичных свойствах. При разработке свойств класса вам нужно спросить себя, являются ли свойства конкретными для родительской модели или специфичны для меньшего проблемного домена.
После того, как вы отредактировали этот класс, вам необходимо определить данные, которые необходимы клиенту. Нуждаются ли они в каждой статье данных в этом классе. Если нет, почему бы не создать класс представления на основе того, что нужно клиенту, и отправить только это.
Если вы не считаете, что частичный вид подходит для ваших данных, вы можете использовать атрибуты DataContractAttribute
и DataMemberAttribute
, чтобы контролировать, какие части вашей модели фактически представляют собой контракт данных, который должен быть передан клиенту. Например .:
[DataContract]
public class Task
{
[DataMember]
public string PropertyA { get; set; }
[DataMember]
public string PropertyB { get; set; }
public string PropertyC { get; set; }
}
В приведенном выше примере, с помощью этих атрибутов можно применять, что PropertyA
и PropertyB
формы составных частей контракта данных. PropertyC
не будет частью контракта, поэтому не будет сериализована. Это, конечно, зависит от DataContractSerializer
или WCF-сервиса (который использует этот сериализатор).
Это также ограничивает односторонний контрактный вид модели.
Я не верю, что когда-либо видел код, который так громко кричит, чтобы его реорганизовали ... Дайте ему то, что он хочет! –