MapReferer
Referer that refers to an bucket of a map implements interface IRefererBase<(Map, Key), Value>.
MapReferer.Create(type) creates implementation for maps that implement Dictionary<Key, Value>.
// Create referer
IReferer<(Dictionary<string, int>, string), int> referer = (IReferer<(Dictionary<string, int>, string), int>)MapReferer.Create(typeof(Dictionary<string, int>));
Referer gets reference to bucket.
// Create map
Dictionary<string, int> map = new Dictionary<string, int> { { "X", 5 }, { "Y", 6 } };
// Get pointer
ref int bucket = ref referer.GetReference((map, "Y"));
// Read
WriteLine(bucket);
// Write
bucket = 100;
// Read
WriteLine(map["Y"]);
MapRefererRequest is request to query a map-element-referer from service.
// Create service
IService service = Services.Create((ServiceHandlers.Instance, AccessorHandlers.Instance), CachePolicies.Default);
// Create request
IRequest request = new MapRefererRequest(typeof(Dictionary<string, int>));
// Create referer
IReferer<(Dictionary<string, int>, string), int> referer = service.GetRequired<IRequest, IReferer<(Dictionary<string, int>, string), int>>(request);
Full Example
Full example
using System.Collections.Generic;
using Avalanche.Accessor;
using Avalanche.Accessor.Map;
using Avalanche.Service;
using Avalanche.Writer;
using static System.Console;
class mapreferer
{
public static void Run()
{
{
// <01>
// Create referer
IReferer<(Dictionary<string, int>, string), int> referer = (IReferer<(Dictionary<string, int>, string), int>)MapReferer.Create(typeof(Dictionary<string, int>));
// </01>
// <02>
// Create map
Dictionary<string, int> map = new Dictionary<string, int> { { "X", 5 }, { "Y", 6 } };
// Get pointer
ref int bucket = ref referer.GetReference((map, "Y"));
// Read
WriteLine(bucket);
// Write
bucket = 100;
// Read
WriteLine(map["Y"]);
// </02>
}
{
// <21>
// Create service
IService service = Services.Create((ServiceHandlers.Instance, AccessorHandlers.Instance), CachePolicies.Default);
// Create request
IRequest request = new MapRefererRequest(typeof(Dictionary<string, int>));
// Create referer
IReferer<(Dictionary<string, int>, string), int> referer = service.GetRequired<IRequest, IReferer<(Dictionary<string, int>, string), int>>(request);
// </21>
// Create map
Dictionary<string, int> map = new Dictionary<string, int> { { "X", 5 }, { "Y", 6 } };
// Get pointer
ref int bucket = ref referer.GetReference((map, "Y"));
// Read
WriteLine(bucket);
// Write
bucket = 100;
// Read
WriteLine(map["Y"]);
}
}
}