如何在C#中连续调用方法? [关闭]
Posted
技术标签:
【中文标题】如何在C#中连续调用方法? [关闭]【英文标题】:How to call the method successively in C#? [closed] 【发布时间】:2017-08-15 11:08:45 【问题描述】:我看到这段代码是用java输入的。
PersonInfo result = personInfoBuilder
.setName("MISTAKE")
.setAge(20)
.setFavoriteAnimal("cat")
.setFavoriteColor("black")
.setName("JDM")
.setFavoriteNumber(7)
.build();
我在 C# 中尝试过这种方式。
public class PersonInfo
public int Age get; set;
public string Name get; set;
public class PersonBuilder
private PersonInfo _personElement = null;
private int age;
private string name;
public void SetAge(int age)
this.age = age;
public void SetName(string name)
this.name = name;
public PersonInfo GetPerson()
_personElement = _personElement ?? new PersonInfo();
_personElement.Age = age;
_personElement.Name = name;
return _personElement;
class Program
static void Main(string[] args)
PersonBuilder builder = new PersonBuilder();
builder.SetName("he")
.SetAge(20);
我有一个错误 [资源不可用于匿名访问。需要客户端身份验证。],
如何像 Java 一样在 C# 中连续调用方法?
【问题讨论】:
你是怎么尝试的? “我看到一辆摩托车偷工减料,我用我的车试了一下,但没用” 创建一个类PersonInfoBuilder
,初始化一个实例,让每个方法都返回这个实例,然后就可以链接了。 Build
-方法返回具有指定属性的PersonInfo
实例。
要搜索的关键字是fluent api或fluent interface。见en.wikipedia.org/wiki/Fluent_interface 和martinfowler.com/bliki/FluentInterface.html
你可以通过使用 c# 扩展方法来实现它,虽然我不明白为什么你需要像这个 java 例子那样做
【参考方案1】:
您建议的代码称为构建器模式。以下是我在 C# 代码中执行构建器模式的方法。
生成器类
class PersonInfo
private string name, animan, color;
private int age, num;
private PersonInfo()
public class Builder
PersonInfo info = new PersonInfo();
public Builder setName(string name) info.name = name; return this;
public Builder setAge(int age) info.age = age; return this;
public Builder setFavoriteAnimal(string animan) info.animan = animan; return this;
public Builder setFavoriteColor(string color) info.color = color; return this;
public Builder setFavoriteNumber(int num) info.num = num; return this;
public PersonInfo build()
return info;
这里是你如何使用它。
PersonInfo.Builder personInfoBuilder = new PersonInfo.Builder();
PersonInfo result = personInfoBuilder
.setName("MISTAKE")
.setAge(20)
.setFavoriteAnimal("cat")
.setFavoriteColor("black")
.setName("JDM")
.setFavoriteNumber(7)
.build();
【讨论】:
以上是关于如何在C#中连续调用方法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
C#:在控制台应用程序的 Main 中调用异步方法导致编译失败 [关闭]