У меня есть класс C#, наследующий System.Collections.ArrayList
, который определяется следующим образом:
namespace foo
{
public class ConnectionTracker : System.Collections.ArrayList
{
public void RemoveConnection(Connection connectionToRemove)
{
// Remove from global track object
this.Remove(connectionToRemove);
// Remove trusted host from another class
External.RemoveAotherHost(connectionToRemove.Name);
}
}
}
Этот класс не используется в приложении C#, а скорее в PowerShell. Создается новый экземпляр этого класса, который используется для отслеживания подключений веб-приложений.
$GlobalVariable = [foo.ConnectionTracker]::new()
$Globalvariable.Add([foo.Connection]::new($ConstructorPropertyValues1)
$Globalvariable.Add([foo.Connection]::new($ConstructorPropertyValues2)
Соединение с веб-приложением имеет свойство Default
, которое имеет тип Bool
. Я хочу создать метод, который ищет все члены внутри себя для единственной записи, которая содержит значение true
для Default
.
Я попытался добавить следующее:
public Connection Default()
{
var defaultConnection = from Connection c in this
where c.Default == true
select c;
return defaultConnection.Single();
}
Но в PowerShell я получаю эту ошибку:
C:\> $GlobalVariable.Default()
MethodInvocationException: Exception calling "Default" with "0" argument(s): "Unable to cast object of type 'System.Management.Automation.PSObject' to type 'Connection'."
Возможно ли то, что я пытаюсь сделать? Да, я уже знаю, что могу сделать $GlobalVariable | Where-Object { $_.Default }
. Но я бы предпочел создать метод класса, который справится с этим более простым способом.