VS2017说“Type'字符串'不是一个集合”

时间:2018-05-22 23:49:56

标签: wpf xaml visual-studio-2017

我在VS2015上使用WPF并且之前没有说“Type'字符串'不是一个集合。”

但是在将VS2015升级到VS2017之后,如果我在xaml代码中使用它,现在它在错误列表面板中说“Type'Strings'不是一个集合”。

我想在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 :(得分:1)

要被视为一个集合,您的类必须继承自ICollectionICollection<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中删除第一次出现的特定对象。