gpt4 book ai didi

c# - 在Azure API for VM中,是否有一种方法可以用一种方法定义许多现有的数据磁盘?

转载 作者:行者123 更新时间:2023-12-02 07:36:31 26 4
gpt4 key购买 nike

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

最佳答案

假设这是在名为 IWithManagedCreate 的接口(interface)上使用扩展方法,您有以下方法:

public static IWithManagedCreate WithExistingDataDisk(this IWithManagedCreate vm, IDisk disk)
{
// ...
return vm;
}

您可以简单地使用 params IDisk[] 重载添加您自己的扩展方法:

public static IWithManagedCreate WithExistingDataDisks(this IWithManagedCreate vm, params IDisk[] disks)
{
foreach (var disk in disks)
{
vm = vm.WithExistingDataDisk(disk);
}
return vm;
}

这样调用它:

    .WithTags(tags)
.WithExistingDataDisks(d) // passing the array containing 0 or more disks
.CreateAsync();

所以,回答这个问题,不,流畅的语法没什么特别的,只是一连串的方法调用。当您链接方法调用时(通过让每个方法返回可以调用更多方法的内容),您不能使它们成为有条件的;您可以创建一个方法,但不执行任何操作,如上面所示。当您使用空数组调用它时,什么也不会发生。

关于c# - 在Azure API for VM中,是否有一种方法可以用一种方法定义许多现有的数据磁盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59533785/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com