MapGet
Map getter is IWriterToRef<(Map, Key), Value>.
IWriterToRef<(Dictionary<string, int>, string), int> mapGet;
Creating a writer
MapGet<Map, Key, Value> is default getter for IDictionary<K, V>.
IWriterToRef<(Dictionary<string, int>, string), int> mapGet = new MapGet<Dictionary<string, int>, string, int>();
Map.Create(mapType, keyType, valueType) and Map.Create(mapType) also create the writer.
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
(IWriterToRef<(Dictionary<string, int>, string), int>)
MapGet.Create(typeof(Dictionary<string, int>));
Map get be adapted from delegate.
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
DelegateWriter.Writer<(Dictionary<string, int>, string), int>(
((Dictionary<string, int> map, string key) args, ref int value) =>
args.map.TryGetValue(args.key, out value)
);
MapGetRequest(Type) is a request to build a map get writer.
MapGetRequest mapRequest = new MapGetRequest(typeof(Dictionary<string, int>));
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
AccessorServices.Instance
.GetRequired<MapGetRequest, IWriterToRef<(Dictionary<string, int>, string), int>>(mapRequest);
Usage
Writer gets value at key.
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
Full Example
Full example
using System.Collections.Generic;
using Avalanche.Accessor;
using Avalanche.Accessor.Map;
using Avalanche.Writer;
public class mapget
{
public static void Run()
{
{
#pragma warning disable CS0168
// <01>
IWriterToRef<(Dictionary<string, int>, string), int> mapGet;
// </01>
#pragma warning restore CS0168
}
{
// <10>
IWriterToRef<(Dictionary<string, int>, string), int> mapGet = new MapGet<Dictionary<string, int>, string, int>();
// </10>
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
}
{
// <11>
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
(IWriterToRef<(Dictionary<string, int>, string), int>)
MapGet.Create(typeof(Dictionary<string, int>));
// </11>
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
}
{
// <12>
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
DelegateWriter.Writer<(Dictionary<string, int>, string), int>(
((Dictionary<string, int> map, string key) args, ref int value) =>
args.map.TryGetValue(args.key, out value)
);
// </12>
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
}
{
// <16>
MapGetRequest mapRequest = new MapGetRequest(typeof(Dictionary<string, int>));
IWriterToRef<(Dictionary<string, int>, string), int> mapGet =
AccessorServices.Instance
.GetRequired<MapGetRequest, IWriterToRef<(Dictionary<string, int>, string), int>>(mapRequest);
// </16>
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
}
{
IWriterToRef<(Dictionary<string, int>, string), int> mapGet = new MapGet<Dictionary<string, int>, string, int>();
// <21>
Dictionary<string, int> map = new Dictionary<string, int> { { "A", 1 }, { "B", 2 }, { "C", 3 } };
int value = mapGet.Read((map, "B"));
// </21>
}
}
}