VS2017 говорит: «Тип« Строки »не является коллекцией» - PullRequest
0 голосов
/ 23 мая 2018

Я использовал WPF с VS2015, и он не говорил «Тип« Строки »не является коллекцией» раньше.

Но после обновления VS2015 до VS2017 теперь он говорит: «Тип" Строки "неколлекция "на панели списка ошибок, если я использую ее в коде xaml.

Я хочу пропустить предупреждение в свойстве Project, но у него нет номера кода ошибки.

(Для вашегоинформация, компиляция и запуск не имеет проблем)

public class Strings
{
    public string this[string key]
    {
        get
        {
            var result = LocalMsg.CommonManager.GetString(key);
            if (result == null && LocalMsg.MyManager != null)
                result = LocalMsg.MyManager.GetString(key);

            if (result == null && LocalMsg.MySubManager != null)
                result = LocalMsg.MySubManager.GetString(key);

            if (result == null)
                result = "Error";
            else
                result = result.Replace("<br>", Environment.NewLine);

            return result;
        }
    }
}


public class LocalMsg : ObservableObjectBase<LocalMsg>
{

    ....

    public Strings LocalText
    {
        get
        {
            return resources;
        }
    }

    ....
}

enter image description here


Я прилагаю примеры кода проекта по ссылке ниже.https://www.dropbox.com/s/t7tiswp7hvvggl9/LocalMsgTest.zip?dl=0

1 Ответ

0 голосов
/ 23 мая 2018

Чтобы считаться коллекцией, ваш класс должен наследовать от ICollection или ICollection<T>, и вам придется реализовать соответствующие методы и свойства.

public class Strings:ICollection<String>
{
}

Для ICollection<T>

Свойства

  • Count - Получает количество элементов, содержащихся в ICollection.
  • IsReadOnly - Получаетзначение, указывающее, доступна ли коллекция ICollection только для чтения.

Методы

  • Add(T) - добавляет элемент в коллекцию ICollection.
  • Clear() -Удаляет все элементы из коллекции ICollection.
  • Contains(T) - определяет, содержит ли коллекция ICollection определенное значение.
  • CopyTo(T[], Int32) - копирует элементы коллекции ICollection в массив, начиная с определенногоИндекс массива.
  • GetEnumerator() - Возвращает перечислитель, который выполняет итерацию по коллекции. (Унаследовано от IEnumerable.)
  • Remove(T) - Удаляет первое вхождение определенного объекта из коллекции ICollection.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...