2013-11-27 1 views
1

Я бы совпадал с двумя свойствами свойств FirstName и LastName и FullName для создания Но они не знают, что писать в наборе.сложный набор и получить в комбинированных свойствах

public class Customer : CommonEntity 
{ 


    public String FirstName 
    { 
     get; 
     set; 
    } 

    public String LastName 
    { 
     get; 
     set; 
    } 



    public string FullName 
    { 
     get { return this.FirstName + " " + this.LastName; } 
     set { **.....** } 

    } 


} 

Спасибо

+9

FullName в идеале должно быть свойство ReadOnly – Abhitalks

+1

Нужно ли устанавливать сеттер или это только для отображения? –

+0

Мне нужен сеттер, потому что в методе сериализации и десериализации этих свойств следует использовать –

ответ

4

Получая первую и фамилию от полного имени крайне сложно. Вспомните «Джон Чарльз Ли», «Педро де ла Круз», «Питер Ван ден Хогенбанд» и т. Д.

Если вы используете сериализацию, не сериализуйте свойство FullName. Большинство сериализаторов ничего не делают с get только свойствами.

+3

Для полноты, я хотел бы добавить имя типа «Джон Чарльз Ли» - это будет пример, когда расщепление в первом пробеле не работает. –

+0

@ O.R.Mapper добавил это :) – Bas

0

Поскольку вам нужна эта сериализация (де), вам необходимо свойство, чтобы иметь сеттер. Однако на самом деле вам не нужно do что-нибудь в настройщике. У нас есть классы, которые мы используем для вывода данных в xml, который представляет собой чисто свойство readonly. Мы обошли это, сделав сеттер пустым, но присутствующим. Процедура Serialization довольно счастливо принимает это и выплевывает его в XML-файл.

public string FullName 
{ 
    get { return string.Format("{0} {1}", this.FirstName, this.LastName); } 
    set { //Do Nothing } 
} 

Это не идеальный вариант, поскольку он выглядит как свойство, пригодное для записи. Но вы можете использовать XmlComments, чтобы указать, что он доступен только для чтения. Это хорошо для наших целей, поскольку наши классы предназначены исключительно для записи в Xml.

В качестве альтернативы, вы могли бы просто исключить FullName из процесса Serialization, поскольку он всегда является составной частью двух других? Пока они присутствуют, вы всегда можете получить FullName.

Смежные вопросы