DefaultConstructor
DefaultConstructor.Create(type) creates constructor for default value. Value-type can always be constructed with default values, and no-args constructor classes.
// Create writer
IWriterToRef<Avalanche.Void, MyStruct> defaultConstructor =
(IWriterToRef<Avalanche.Void, MyStruct>)
DefaultConstructor.Create(typeof(MyStruct));
// Create instance
MyStruct o = defaultConstructor.Read(default);
Constructor writer can created with specific constructor method and constant arguments.
// Get .ctor
ConstructorInfo ci = typeof(MyClass).GetConstructor(new Type[] { typeof(int) })!;
// Assign inital args
object[] arguments = new object[] { 5 };
// Create writer
IWriterToRef<Avalanche.Void, MyClass> defaultConstructor =
(IWriterToRef<Avalanche.Void, MyClass>)
DefaultConstructorCtor.Create(typeof(MyClass), ci, arguments);
// Create instance
MyClass o = defaultConstructor.Read(default);
DefaultConstructorRequest(target) is request for default constructor. Handlers can participate in this request.
// Create service
IService service = Services.Create(Avalanche.Writer.Module.Instance, CachePolicies.Default);
// Create request
IRequestFor<IWriter> request = new DefaultConstructorRequest(typeof(MyStruct));
// Create passthrough writer
IWriterToRef<Avalanche.Void, MyStruct> writer =
service.GetRequired<IRequest, IWriterToRef<Avalanche.Void, MyStruct>>(request);
// Create struct
MyStruct i = writer.Read(default);
DefaultConstructorArray.Create(arrayType) creates empty array constructor.
// Create writer
IWriterToRef<Avalanche.Void, int[]> defaultConstructor =
(IWriterToRef<Avalanche.Void, int[]>)
DefaultConstructorArray.Create(typeof(int[]));
// Create empty array
int[] array = defaultConstructor.Read(default);
public record MyClass(int x);
public record struct MyStruct(int x);
Full Example
Full example
using System;
using System.Reflection;
using Avalanche.Service;
using Avalanche.Writer;
public class defaultconstructor
{
public static void Run()
{
{
// <01>
// Create writer
IWriterToRef<Avalanche.Void, int[]> defaultConstructor =
(IWriterToRef<Avalanche.Void, int[]>)
DefaultConstructorArray.Create(typeof(int[]));
// Create empty array
int[] array = defaultConstructor.Read(default);
// </01>
}
{
// <03>
// Create writer
IWriterToRef<Avalanche.Void, MyStruct> defaultConstructor =
(IWriterToRef<Avalanche.Void, MyStruct>)
DefaultConstructor.Create(typeof(MyStruct));
// Create instance
MyStruct o = defaultConstructor.Read(default);
// </03>
}
{
// <04>
// Get .ctor
ConstructorInfo ci = typeof(MyClass).GetConstructor(new Type[] { typeof(int) })!;
// Assign inital args
object[] arguments = new object[] { 5 };
// Create writer
IWriterToRef<Avalanche.Void, MyClass> defaultConstructor =
(IWriterToRef<Avalanche.Void, MyClass>)
DefaultConstructorCtor.Create(typeof(MyClass), ci, arguments);
// Create instance
MyClass o = defaultConstructor.Read(default);
// </04>
}
{
// <11>
// Create service
IService service = Services.Create(Avalanche.Writer.Module.Instance, CachePolicies.Default);
// Create request
IRequestFor<IWriter> request = new DefaultConstructorRequest(typeof(MyStruct));
// Create passthrough writer
IWriterToRef<Avalanche.Void, MyStruct> writer =
service.GetRequired<IRequest, IWriterToRef<Avalanche.Void, MyStruct>>(request);
// Create struct
MyStruct i = writer.Read(default);
// </11>
}
}
// <00>
public record MyClass(int x);
public record struct MyStruct(int x);
// </00>
}