C# 如何创建具有选择性属性的对象?

C# 如何创建具有选择性属性的对象?,c#,powershell,C#,Powershell,使用Powershell的AD cmdlet时,可以执行以下任一操作以返回Microsoft.ActiveDirectory.Management.ADUser类型的对象: Get-ADUser user Get-ADUser user -Properties * 但是,第二个将返回一个具有更多属性的对象 我正在C#中开发自己的PowerShell cmdlet,它将返回自定义对象,与此类似。如何将其设置为仅基于参数返回某些属性 下面是一个将返回的示例类。我该如何设置它,使其有时包含暂停的bo

使用Powershell的AD cmdlet时,可以执行以下任一操作以返回Microsoft.ActiveDirectory.Management.ADUser类型的对象:

Get-ADUser user
Get-ADUser user -Properties *
但是,第二个将返回一个具有更多属性的对象

我正在C#中开发自己的PowerShell cmdlet,它将返回自定义对象,与此类似。如何将其设置为仅基于参数返回某些属性

下面是一个将返回的示例类。我该如何设置它,使其有时包含暂停的bool,有时不包含?例如,仅当我有一个参数-挂起时

public class User
{
    public string Username { get; set; }
    public string GivenName { get; set; }
    public string FamilyName { get; set; }
    public string Uri { get; set; }
    public bool Suspended { get; set; }

    public GAUser(string username, string givenName,
        string familyName)
    {
        Username = username;
        GivenName = givenName;
        FamilyName = familyName;
    }
}

下面是使用交换机的一个简单示例:

$scriptBlock = {
 param ([switch]$Suspended)
 $original = New-Object System.Object
 if ($Suspended)
 {
  $original | Add-Member -MemberType NoteProperty -Name Suspended -Value $true
 }
 Write-Output $original
}
如果使用挂起的开关调用scriptblock,$new将具有以下属性:

$new = & $scriptBlock -Suspended
$new = & $scriptBlock
如果在没有挂起开关的情况下调用scriptblock,$new将不具有以下属性:

$new = & $scriptBlock -Suspended
$new = & $scriptBlock

我明白你的意思,我目前在代码中使用开关,但我希望从C#的角度来做这件事。我已经让开关工作,我已经建立了类。我只是不知道如何从C#内部做到你所说的。