Func<object[], Record>
RecordCreateFunc.TryCreateCreateFunc(this recordDescription, out delegate) creates Func<object[], Record> constructor. Arguments match IRecordDescription.Fields.
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
recordDescription.TryCreateCreateFunc(out Delegate @delegate);
// Cast delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)@delegate;
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
public struct MyStruct
{
public int value;
public MyStruct(int value)
{
this.value = value;
}
}
RecordCreateFunc.Create[recordDescription] is a provider that creates constructor delegate from record description.
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.Create[recordDescription];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFunc.Cached[recordDescription] is a provider that creates and caches constructor delegate from record description.
// Create description
IRecordDescription recordDescription = RecordDescription.Cached[typeof(MyStruct)];
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.Cached[recordDescription];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFunc.CreateFromType[type] is a provider that creates constructor delegate from type.
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.CreateFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFunc.CachedFromType[type] is a provider that creates and caches constructor delegate from type.
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.CachedFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
Func<object[], object>
RecordCreateFuncOO.TryCreateCreateFuncOO(this recordDescription, out delegate) creates Func<object[], object> constructor. Arguments match IRecordDescription.Fields.
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
recordDescription.TryCreateCreateFuncOO(out Func<object[], object> recordCreate);
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFuncOO.Create[recordDescription] is a provider that creates constructor delegate from record description.
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.Create[recordDescription];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFuncOO.Cached[recordDescription] is a provider that creates and caches constructor delegate from record description.
// Create description
IRecordDescription recordDescription = RecordDescription.Cached[typeof(MyStruct)];
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.Cached[recordDescription];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFuncOO.CreateFromType[type] is a provider that creates constructor delegate from type.
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.CreateFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
RecordCreateFuncOO.CachedFromType[type] is a provider that creates and caches constructor delegate from type.
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.CachedFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
Full Example
Full example
using System;
using System.Reflection;
using Avalanche.Utilities.Record;
using static System.Console;
class recordcreate
{
public static void Run()
{
// Func<object[], Record>
{
// <00>
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
recordDescription.TryCreateCreateFunc(out Delegate @delegate);
// Cast delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)@delegate;
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </00>
}
{
// <01>
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.Create[recordDescription];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </01>
}
{
// <02>
// Create description
IRecordDescription recordDescription = RecordDescription.Cached[typeof(MyStruct)];
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.Cached[recordDescription];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </02>
}
{
// <03>
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.CreateFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </03>
}
{
// <04>
// Create delegate
Func<object[], MyStruct> recordCreate = (Func<object[], MyStruct>)RecordCreateFunc.CachedFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </04>
}
// Func<object[], object>
{
// <10>
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
recordDescription.TryCreateCreateFuncOO(out Func<object[], object> recordCreate);
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </10>
}
{
// <10B>
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
RecordCreateFunc.TryCreateCreateFunc((IConstructionDescription)recordDescription.Construction!, out Delegate? @delegate, typeof(object));
// Cast delegate
Func<object[], object> recordCreate = (Func<object[], object>)@delegate!;
// Create record
MyStruct myStruct = (MyStruct)recordCreate!(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </10B>
}
{
// <11>
// Create description
IRecordDescription recordDescription = RecordDescription.Create[typeof(MyStruct)];
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.Create[recordDescription];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </11>
}
{
// <12>
// Create description
IRecordDescription recordDescription = RecordDescription.Cached[typeof(MyStruct)];
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.Cached[recordDescription];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </12>
}
{
// <13>
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.CreateFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </13>
}
{
// <14>
// Create delegate
Func<object[], object> recordCreate = RecordCreateFuncOO.CachedFromType[typeof(MyStruct)];
// Create record
MyStruct myStruct = (MyStruct)recordCreate(new object[] { 10 });
// Print value
WriteLine(myStruct.value); // 10
// </14>
}
}
// <101>
public struct MyStruct
{
public int value;
public MyStruct(int value)
{
this.value = value;
}
}
// </101>
}