none
Существование объекта RRS feed

  • Вопрос

  • Здравствуйте! Как узнать, существует ли в программе на C# объект интерфейса?

    Дело в том, что есть два потока.  В одном из них объект создаётся (при необходимости), а  в другом - уничтожается.

    Если объект не был создан, то возникает ошибка.

    23 ноября 2012 г. 12:49

Ответы

Все ответы

  • Если объект есть, то должна быть хоть одна ссылка на него. Если ни одной нет, то и объекта нет.
    • Помечено в качестве ответа Cyberwalker123 26 ноября 2012 г. 6:33
    23 ноября 2012 г. 13:03
    Модератор
  • Что Вы подразумеваете под "объект интерфейса"? Приведите пример, где осуществляется создание/уничтожение объекта. Это поможет прояснить ситуацию.
    23 ноября 2012 г. 13:25
  • Телепатаю так:

    Допустим в программе создано сколько-то объектов.
    Некоторые из них наследутся от интерфейса.

    И нужно получить список всех объектов, которые наследуются от конкретного интерфейса.

    //
    Я бы наверное тогда сделал прост список всех объектов,
    потом по ним проходил когда надо узанть чего надо,
    и через рефлексию смотрел какие там интерфейсы.

    Если то, что надо, то и выбирать его.

    А да.
    Там диспозить вручную (через узинг или типа того) надо наверное.
    И при уничтожении объекта удалять из списка.
    А то ссылки же сохраняются в списке.

    Ну или у объектов делать идшники (ID целые или нет)  какие-нибудь и их уже в список кидать/удалять.

    так наверное лучше


    • Изменено INFEL8 23 ноября 2012 г. 19:55
    23 ноября 2012 г. 18:05
  • Если объект есть, то должна быть хоть одна ссылка на него. Если ни одной нет, то и объекта нет.

    Да, согласен, простой способ, который мне подсказали 

    if (Object != null) 
                {
                    Object.Dispose();
                }

    26 ноября 2012 г. 6:35
  • Хм, а я что-то подумал, что Вы не знаете что уже создано в программе, и не следите за конкретным объектом.
    Наверное я опять что-то не понял.

    Так что конечно, если ссылок на конкретный объект нет, то и его можно сказать нет.
    По крайней мере сборщик мусора потом приберёт, если что.
    26 ноября 2012 г. 7:07
  • Возможно вы имели ввиду это:

    if (Interfaces.Instance == null)
    {
        // Создаём...
    }
    p.s: не ругайте, если совсем не в ту степь ;)