链接c#看起来像jQuery一个好主意?

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:更多解释为"为什么"我正在考虑这个问题. 我有两件事情在继续:

  1. 我从一个对象获取数据并使用它来设置另一个对象的属性.
  2. 我需要对这些属性执行一些操作.

所以我的初始代码看起来更像

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)

初始化器很棒,但它们也将所有属性捆绑在一起,我希望属性集接近我将采取的操作.

Jon*_*eet 5

相反,使用对象初始化器有什么问题吗?

new Foo { Title = foo1.Title, Name = foo1.Name }
   .DoSomeStuff()
   .DoSomeMoreStuff();
Run Code Online (Sandbox Code Playgroud)

链接一般很好(看看LINQ)但是对象初始化器意味着你不需要添加看起来像属性的方法.