如何在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 apifluent 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 中调用异步方法导致编译失败 [关闭]

如何在 C# 中将 Web 服务商店调用到列表中 [关闭]

从不同的进程C#调用方法[关闭]

c#里面如何显示下一个窗体而关闭当前窗体?

有啥方法可以保护在开源项目中进行的 Web 服务调用? [关闭]

如何在 C# 中获取调用方法 [重复]