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



根据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()/

List<T>.AsReadOnly()

仅在某些 PCL 配置文件中可用。特别是,那些面向Windows 8/8.1和Windows Phone 8.1非Silverlight(32,111,259,328等)的配置文件可能不包括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);
}

最新更新