C# методы доступа к объектам типа - PullRequest
0 голосов
/ 17 марта 2020

В программном задании нам не разрешено использовать списки, мы можем использовать только массивы, однако у меня есть несколько классов и массивов для всех из них, которые я хочу проверить в них для переменной.

Foo f = new Foo();
Bar b = new Bar();

Foo[] fArray = new Foo[1];
fArray[0] = f;

CheckStatus(fArray);


public boolean CheckStatus<T>(T[] array) {

    if(array[0].IsTrue()) {
        return true;
    }

return false;

Однако я получаю только проблему "не могу разрешить символ" IsTrue ". Я могу заставить его работать, непосредственно приведя его к объекту Foo, но тогда он не будет работать с Bar et c.

It отлично работал с обобщениями для большинства других вещей, таких как расширение длины массива, но когда мне нужно получить доступ к переменным объекта, мне нужно его привести, и для этого мне понадобится указать c, если в операторах для каждого типа класса мой Программа имеет то, что я хочу использовать с этим методом.

Заранее благодарен за любую помощь, которую я могу получить здесь.

1 Ответ

1 голос
/ 17 марта 2020

Вам понадобится интерфейс. И пусть ваши классы реализуют это.

public interface IMyObj
{
     bool IsTrue();
}

Затем ограничьте ваш тип T

public boolean CheckStatus<T>(T[] array) where T : IMyObj {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...