AsReadOnly
.AsReadOnly() decorates provider to assigns any result IReadOnly implementing result value into read-only state.
// Create provider
IProvider<string, MyRecord> provider =
Providers.Func((string name) => new MyRecord { Name = name })
.AsReadOnly();
// Create record from read-only provider
MyRecord record = provider["Hello"];
public record MyRecord : ReadOnlyAssignableRecord
{
string name = null!;
public string Name { get => name; set => this.AssertWritable().name = value; }
}
Full Example
Full example
using Avalanche.Utilities;
using Avalanche.Utilities.Provider;
class provider_readonly
{
public static void Run()
{
{
// <01>
// Create provider
IProvider<string, MyRecord> provider =
Providers.Func((string name) => new MyRecord { Name = name })
.AsReadOnly();
// Create record from read-only provider
MyRecord record = provider["Hello"];
// </01>
}
}
// <02>
public record MyRecord : ReadOnlyAssignableRecord
{
string name = null!;
public string Name { get => name; set => this.AssertWritable().name = value; }
}
// </02>
}