ReadOnlyExtensions 1.1.0
See the version list below for details.
dotnet add package ReadOnlyExtensions --version 1.1.0
NuGet\Install-Package ReadOnlyExtensions -Version 1.1.0
<PackageReference Include="ReadOnlyExtensions" Version="1.1.0" />
paket add ReadOnlyExtensions --version 1.1.0
#r "nuget: ReadOnlyExtensions, 1.1.0"
// Install ReadOnlyExtensions as a Cake Addin #addin nuget:?package=ReadOnlyExtensions&version=1.1.0 // Install ReadOnlyExtensions as a Cake Tool #tool nuget:?package=ReadOnlyExtensions&version=1.1.0
ReadOnlyExtensions
Extensions to expose lists, collections, dictionaries, and enumerables as read-only.
Installation
Package Manager
Install-Package ReadOnlyExtensions
.NET CLI
dotnet add package ReadOnlyExtensions
How to Use
Simply call AsReadOnly()
on any collection that implements IList<T>
, ICollection<T>
, IDictionary<TKey,TValue>
, or IEnumerable<T>
.
Enumerables expose a read-only interface. However, if the underlying collection is not read-only, casting can be used to alter it. Using the
AsReadOnly()
extension will prevent this.
var myReadOnlyList = myList.AsReadOnly();
Typically you would expose a read-only collection where the class will manage the state internally.
public class MyClass
{
// private list that can be manipulated
private readonly IList<Item> _items = new List<Item>();
// public list that is read only
public IReadOnlyList<Item> Items => _items.AsReadOnly();
public void AddItem(Item item)
{
_items.Add(item);
}
public void RemoveItem(Item item)
{
_items.Remove(item);
}
}
public class MyClass
{
// private dictionary that can be manipulated
private readonly IDictionary<int, Item> _items = new Dictionary<int, Item>();
// public dictionary that is read only
public IReadOnlyDictionary<int, Item> Items => _items.AsReadOnly();
public void AddItem(Item item)
{
_items[item.Id] = item;
}
public void RemoveItem(int itemId)
{
_items.Remove(itemId);
}
}
public class MyClass
{
// private collection that can be manipulated
private readonly ICollection<Item> _items = new HashSet<Item>();
// public collection that is read only
public IReadOnlyCollection<Item> Items => _items.AsReadOnly();
public void AddItem(Item item)
{
_items.Add(item);
}
public void RemoveItem(Item item)
{
_items.Remove(item);
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.0 is compatible. netstandard1.1 was computed. netstandard1.2 was computed. netstandard1.3 was computed. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore was computed. netcore45 was computed. netcore451 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added an extension to expose enumerables as read-only. This will prevent casting if the underlying collection can be altered.