你好,我正在尝试为一个对象创建一个流畅的API。我创建了一个builder
对象,该对象将获得其依赖关系,然后我将生成结果对象。
问题是我需要使用那些async
执行一些dependencies
操作才能生成最终对象。
public class MyObject
{
private object finalDependency;
MyObject(object dependency)
{
this.finalDependency=dependency;
}
}
public class MyBuilder
{
public int Dep1 {get;set;}
public int Dep2 {get;set;}
}
public static class MyBuilderExtension
{
public static MyBuilder SetDependency1(this MyBuilder obj,int dep1)
{
obj.Dep1=dep1;
return obj;
}
public static MyBuilder SetDependency1(this MyBuilder obj,int dep2)
{
obj.Dep1=dep2;
return obj;
}
public static MyObject BuildAsync(this MyBuilder obj)
{
var d1=await OperationAsync1(obj.Dep1);
var d2=await OperationAsync2(obj.Dep2);
var dep=await OperationAsync(d1,d2);
return new MyObject(dep);
}
}
如您所见,我正在最终方法中执行所有必需的async
操作,因为否则我无法保证以特定顺序(dep1-> dep2)执行操作。
如果我不想在最后的操作BuildAsync
中将它们混在一起,那将是另一种选择。
我知道我可以一直使用async
来逐一设置它们。 。但就我而言,我需要遵守一个命令。我不能先执行async
操作。最后将它们保留给我控制权,而只有我才能构造该对象。
要达到以下目标,还有什么其他选择:
-create builder
-set field1 (async)
-set field2 (async)
-build
用户被迫首先设置字段1,然后设置2?
PS 即使在上述示例中,这些操作似乎并不相互关联,因此您可能会说我需要的东西是无用的,因为它们并不依赖于它们。我必须按照特定的顺序进行操作!