This commit is contained in:
Даниил Заикин
2026-06-17 20:44:53 +03:00
parent 9d153773c2
commit b133e7c656
1880 changed files with 244545 additions and 0 deletions
@@ -0,0 +1,40 @@
using System;
using System.Reflection;
namespace QFSW.QC.Internal
{
internal class FieldAutoMethod : FieldMethod
{
public enum AccessType
{
Read = 0,
Write = 1
}
private readonly AccessType _accessType;
public FieldAutoMethod(FieldInfo fieldInfo, AccessType accessType) : base(fieldInfo)
{
_accessType = accessType;
if (_accessType == AccessType.Read)
{
_internalDelegate = _fieldInfo.IsStatic
? (Func<FieldInfo, object>)_StaticReader
: (Func<object, object>)_fieldInfo.GetValue;
_parameters = Array.Empty<ParameterInfo>();
}
else
{
_internalDelegate = _fieldInfo.IsStatic
? (Action<FieldInfo, object>)_StaticWriter
: (Action<object, object>)_fieldInfo.SetValue;
_parameters = new ParameterInfo[] { new CustomParameter(_internalDelegate.Method.GetParameters()[1], _fieldInfo.FieldType, "value") };
}
}
private static object _StaticReader(FieldInfo field) { return field.GetValue(null); }
private static void _StaticWriter(FieldInfo field, object value) { field.SetValue(null, value); }
}
}