C# унаследованный класс ArrayList с настраиваемым методом для запроса самого себя - PullRequest
1 голос
/ 28 мая 2020

У меня есть класс 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 }. Но я бы предпочел создать метод класса, который справится с этим более простым способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...