我正在考虑使用扩展方法来链接 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
}
更新:更多解释作为我正在考虑的“为什么”。 我有两件事:
- 我从一个对象获取数据并使用它来设置另一个对象的属性。
- 我需要对这些属性执行一些操作。
所以我的初始代码看起来更像
foo2.bars = foo1.bars;
foo2.RemoveUnderage();
foo2.NotifyPatronsBarsAreFull();
相反,我认为写起来可能更具描述性:
foo2.bars(foo1.bars).RemoveUnderage().NotifyPatrons();
初始化器很棒,但它们也将属性捆绑在一起,我希望属性集接近我将对它们执行的操作。