Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 添加依赖于第一个类型的第二个类型时出错_C#_Class_Powershell_Pscustomobject_Powershell V5.0 - Fatal编程技术网

C# 添加依赖于第一个类型的第二个类型时出错

C# 添加依赖于第一个类型的第二个类型时出错,c#,class,powershell,pscustomobject,powershell-v5.0,C#,Class,Powershell,Pscustomobject,Powershell V5.0,我正在使用PowerShell编写一个脚本,它使用一个自定义对象。但棘手的是,这个自定义对象使用另一个自定义对象作为属性。我正试图用C#语法来做这件事 当我尝试运行脚本时,出现以下错误: The type or namespace name 'Disk' could not be found (are you missing a using directive or an assembly reference?) c:\Users\trumpe\AppData\Local\Temp\orydsm

我正在使用PowerShell编写一个脚本,它使用一个自定义对象。但棘手的是,这个自定义对象使用另一个自定义对象作为属性。我正试图用C#语法来做这件事

当我尝试运行脚本时,出现以下错误:

The type or namespace name 'Disk' could not be found (are you missing a using directive or an assembly reference?)
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(1) : public class VirtualMachine{
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(2) : >>>     public Disk Disks;
c:\Users\trumpe\AppData\Local\Temp\orydsmyw.0.cs(3) :     public string IPAddress;
在PowerShell中有没有办法做到这一点?以下是我在一个文件中的类代码:

Add-Type -Language CSharp @"
public class Disk{
public string VirtualMachineDiskID;
public string StorageID;
public string StorageIdentifier;
public string DiskFileName;
public string StorageProfileID;
public int CapacityKB;
public int ControllerKey;
public int DeviceKey;
public int DiskMode;
public int UnitNumber;
}
"@;



Add-Type -Language CSharp @"
public class VirtualMachine{
public Disk Disks;   #<=== This part stops working because it cannot find the type Disk 
public string IPAddress;
public string Name;
public string OSFullName;
public string PowerState;
public string ResourcePoolID;
public string TenantID;
public string UniqueId;
public string VirtualMachineID;
public int NumCPU;
public int NumNic;
public int StorageCapacityAllocatedMB;
public int RamAllocatedMB;
public bool IsRemoved;
public bool IsTemplate;
}
"@;
添加类型-语言CSharp@”
公共类磁盘{
公共字符串虚拟机;
公共字符串StorageID;
公共字符串标识符;
公共字符串文件名;
公共字符串StorageProfileID;
公共综合能力;
公共int控制器密钥;
公共int设备密钥;
公共磁盘模式;
公共国际单位号码;
}
"@;
添加类型-语言CSharp@“
公共类虚拟机{
公共磁盘;#引入类:

Class Disk{

    [string] $VirtualMachineDiskID;
    [string] $StorageID;
    [string] $StorageIdentifier;
    [string] $DiskFileName;
    [string] $StorageProfileID;
    [int] $CapacityKB;
    [int] $ControllerKey;
    [int] $DeviceKey;
    [int] $DiskMode;
    [int] $UnitNumber;

}

Class VirtualMachine {
    [Disk] $Disks;
    [string] $IPAddress;
    [string] $Name;
    [string] $OSFullName;
    [string] $PowerState;
    [string] $ResourcePoolID;
    [string] $TenantID;
    [string] $UniqueId;
    [string] $VirtualMachineID;
    [int] $NumCPU;
    [int] $NumNic;
    [int] $StorageCapacityAllocatedMB;
    [int] $RamAllocatedMB;
    [bool] $IsRemoved;
    [bool] $IsTemplate;
}

$disk = New-Object Disk
$disk.StorageID = 4711

$vm = New-Object VirtualMachine
$vm.Disks = $disk

仅供参考,我删除了问题正文中后来添加的标记。@Matt好的,我不再添加它们了。我想我找到了你要找的东西,这解释了你所做的不起作用的原因。关于类的答案也会对你有所帮助。非常感谢你的回答。这对我帮助很大,除此之外,我还找到了另一个使用C的解决方案#你所要做的就是把依赖的类放在一个Add类型中,即Add类型-Language CSharp@“public class Disk{public string VirtualMachineDiskID;public string StorageID;}public class VirtualMachine{public Disk Disk#