C#Fluent API是否有条件语法

问题描述 投票:0回答:1

我有一段流畅的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个或更多磁盘?

c# azure fluent azure-sdk-.net
1个回答
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();
© www.soinside.com 2019 - 2024. All rights reserved.