Rom*_*key 3 c# fluent-interface
为了使我的代码更有条理,我决定使用流畅的接口; 然而,通过阅读可用的教程,我找到了很多方法来实现这种流畅性,其中我找到了一个主题,他说创建Fluent Interface我们应该使用Interfaces,但他没有提供任何好的细节来实现它.
以下是我如何实现Fluent API
public class Person
{
public string Name { get; private set; }
public int Age { get; private set; }
public static Person CreateNew()
{
return new Person();
}
public Person WithName(string name)
{
Name = name;
return this;
}
public Person WithAge(int age)
{
Age = age;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
Person person = Person.CreateNew().WithName("John").WithAge(21);
Run Code Online (Sandbox Code Playgroud)
但是,我如何让Interfaces以更有效的方式创建Fluent API?
interface如果要控制调用的顺序,实现流畅的API使用是很好的.让我们假设在您的示例中设置名称时,您还希望允许设置年龄.并且我们假设您需要保存此更改,但仅限于设置年龄之后.要实现这一点,您需要使用接口并将它们用作返回类型.看例子:
public interface IName
{
IAge WithName(string name);
}
public interface IAge
{
IPersist WithAge(int age);
}
public interface IPersist
{
void Save();
}
public class Person : IName, IAge, IPersist
{
public string Name { get; private set; }
public int Age { get; private set; }
private Person(){}
public static IName Create()
{
return new Person();
}
public IAge WithName(string name)
{
Name = name;
return this;
}
public IPersist WithAge(int age)
{
Age = age;
return this;
}
public void Save()
{
// save changes here
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果你的具体情况好/需要,仍然遵循这种方法.