我有一段流畅的C#代码:
如果我知道存在多少个磁盘,语法将是:
var tempVM = await azure.VirtualMachines.Define(targetVMName)
.WithRegion(vm.Region)
.WithExistingResourceGroup(targetResourceGroupName)
.WithNewPrimaryNetworkInterface(nicDefinitions[0])
.WithSpecializedOSDisk(disks[0], disks[0].OSType.Value)
.WithSize(vm.Size)
.WithTags(tags)
.WithExistingDataDisk(d[0]) <<<<<<<
.WithExistingDataDisk(d[1]) <<<<<<<
.WithExistingDataDisk(d[2]) <<<<<<<
.WithExistingDataDisk(d[3]) <<<<<<<
.CreateAsync();
我可能要添加0个或更多数据磁盘。是否有流利的语法来支持0个或更多磁盘?
假设这是在名为IAzureVmDefinitionBuilder
的接口上使用扩展方法,您具有此方法:
public static IAzureVmDefinitionBuilder WithExistingDataDisk(this IAzureVmDefinitionBuilder vm, DiskDefinition disk)
{
// ...
return vm;
}
您可以简单地添加自己的扩展方法:
public static IAzureVmDefinitionBuilder WithExistingDataDisks(this IAzureVmDefinitionBuilder vm, params DiskDefinition[] disks)
{
foreach (var disk in disks)
{
vm.WithExistingDataDisk(disk);
}
return vm;
}
并这样称呼:
.WithTags(tags)
.WithExistingDataDisks(d)
.CreateAsync();