Я подумываю об использовании методов расширения для цепочки выражения ac #, чтобы оно выглядело как jQuery в следующих случаях:
foo foo2 =
new foo().Title(foo1.Title)
.Name(foo1.Name)
.DoSomeStuff()
.DoSomeMoreStuff();
Это хорошая / плохая идея?
public class foo
{
public string Title {get;set;}
public string Name {get;set;}
public int Age {get;set;}
public foo(){}
}
public static class fooExtension
{
public static foo Title(this foo source, string title)
{
source.Title = title;
return source;
}
//and other extensions
}
Обновление: более подробное объяснение, поскольку "почему" я рассматриваю это. У меня есть 2 вещи:
- Я получаю данные отодин объект и использовать его для установки свойств другого.
- Мне нужно выполнить какое-то действие с этими свойствами.
Итак, мой исходный код выглядел больше как
foo2.bars = foo1.bars;
foo2.RemoveUnderage();
foo2.NotifyPatronsBarsAreFull();
и вместо этого я подумал, что это может бытьболее наглядно написать:
foo2.bars(foo1.bars).RemoveUnderage().NotifyPatrons();
Инициализаторы хороши, но они также объединяют свойства вместе, и я хотел, чтобы набор свойств был близок к действиям, которые я буду над ними выполнять.