.AsReadOnly()不包括PCL,尽管它在MSDN中被列为支持

时间:2016-06-17 04:46:39

标签: xamarin portable-class-library

根据MSDN,.AsReadOnly()方法被列为PCL支持,但我无法在我的Xamarin PCL上引用它。

任何人都可以验证吗?如果有,那么.AsReadOnly()等价的替代品吗?

https://msdn.microsoft.com/en-us/library/e78dcd75(v=vs.100).aspx

https://developer.xamarin.com/api/member/System.Collections.Generic.List%3CT%3E.AsReadOnly()/

1 个答案:

答案 0 :(得分:7)

List<T>.AsReadOnly()仅适用于某些PCL配置文件。特别是,那些以 Windows 8 / 8.1 Windows Phone 8.1非Silverlight (32,111,259,328等)为目标的配置文件可能不< / strong>包含List<T>.AsReadOnly(),因为此方法在这些平台上可用。

简单的解决方法是通过构造函数创建ReadOnlyCollection<T>

List<T> list;
var listToReadOnly = new ReadOnlyCollection<T>(list);

如果您想保持源代码不变,您甚至可以实现扩展方法来完成这项工作。只需在公共静态类中包含以下方法:

public static ReadOnlyCollection<T> AsReadOnly<T>(this List<T> list)
{
    return new ReadOnlyCollection<T>(list);
}