Скажем, у меня есть класс с некоторыми свойствами и некоторыми методами для управления этими свойствами:
public class PersonModel
{
public string Name { get; set; }
public string PrimaryPhoneNumber { get; set; }
public void LoadAccountInfo(AccountInfo accountInfo)
{
this.Name = accountInfo.Name;
}
public void LoadPhoneInfo(PhoneInfo phoneInfo)
{
this.PrimaryPhoneNumber = phoneInfo.PhoneNumber;
}
}
Типичное использование будет:
var model = new PersonModel();
model.LoadAccountInfo(accountInfo);
model.LoadPhoneInfo(phoneInfo);
Я думаю, было бы здорово сделатьметоды цепочки:
public PersonModel LoadAccountInfo(AccountInfo accountInfo)
{
this.Name = accountInfo.Name;
return this;
}
public PersonModel LoadPhoneInfo(PhoneInfo phoneInfo)
{
this.PrimaryPhoneNumber = phoneInfo.PhoneNumber;
return this;
}
Тогда использование будет:
var model = new PersonModel()
.LoadAccountInfo(accountInfo)
.LoadPhoneInfo(phoneInfo);
Но я не возвращаю измененный «клон» переданного объекта PersonModel в каждом из этих цепочечных методов,Они просто изменяют исходный объект и возвращают его (для удобства).Для меня это создает неоднозначность, потому что кто-то, вызывающий эти методы, может предположить, что они неизменны (то есть они оставляют исходный объект нетронутым, но возвращают измененный объект).цепные интерфейсы?