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