Joh*_*ohn 2 c# extension-methods method-chaining
我正在考虑使用扩展方法链接ac#语句,看起来像下面的jQuery:
foo foo2 =
new foo().Title(foo1.Title)
.Name(foo1.Name)
.DoSomeStuff()
.DoSomeMoreStuff();
Run Code Online (Sandbox Code Playgroud)
这是好主意吗?
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
}
Run Code Online (Sandbox Code Playgroud)
Upadate:更多解释为"为什么"我正在考虑这个问题. 我有两件事情在继续:
所以我的初始代码看起来更像
foo2.bars = foo1.bars;
foo2.RemoveUnderage();
foo2.NotifyPatronsBarsAreFull();
Run Code Online (Sandbox Code Playgroud)
相反,我认为写作可能更具描述性:
foo2.bars(foo1.bars).RemoveUnderage().NotifyPatrons();
Run Code Online (Sandbox Code Playgroud)
初始化器很棒,但它们也将所有属性捆绑在一起,我希望属性集接近我将采取的操作.
相反,使用对象初始化器有什么问题吗?
new Foo { Title = foo1.Title, Name = foo1.Name }
.DoSomeStuff()
.DoSomeMoreStuff();
Run Code Online (Sandbox Code Playgroud)
链接一般很好(看看LINQ)但是对象初始化器意味着你不需要添加看起来像属性的方法.
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |