-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathIReflectionConverter.cs
More file actions
103 lines (90 loc) · 3.58 KB
/
IReflectionConverter.cs
File metadata and controls
103 lines (90 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
* ReflectorNet
* Author: Ivan Murzak (https://github.com/IvanMurzak)
* Copyright (c) 2025 Ivan Murzak
* Licensed under the Apache License, Version 2.0. See LICENSE file in the project root for full license information.
*/
using System;
using System.Collections.Generic;
using System.Reflection;
using com.IvanMurzak.ReflectorNet.Model;
using Microsoft.Extensions.Logging;
namespace com.IvanMurzak.ReflectorNet.Converter
{
public interface IReflectionConverter
{
bool AllowCascadeSerialization { get; }
int SerializationPriority(Type type, ILogger? logger = null);
object? Deserialize(
Reflector reflector,
SerializedMember data,
Type? fallbackType = null,
string? fallbackName = null,
int depth = 0,
Logs? logs = null,
ILogger? logger = null,
DeserializationContext? context = null);
SerializedMember Serialize(
Reflector reflector,
object? obj,
Type? fallbackType = null,
string? name = null,
bool recursive = true,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
int depth = 0,
Logs? logs = null,
ILogger? logger = null,
SerializationContext? context = null);
bool TryPopulate(
Reflector reflector,
ref object? obj,
SerializedMember data,
Type type,
int depth = 0,
Logs? logs = null,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
bool SetField(
Reflector reflector,
ref object? obj,
Type type,
FieldInfo fieldInfo,
SerializedMember? value,
int depth = 0,
Logs? logs = null,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
bool SetProperty(
Reflector reflector,
ref object? obj,
Type type,
PropertyInfo propertyInfo,
SerializedMember? value,
int depth = 0,
Logs? logs = null,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
IEnumerable<FieldInfo>? GetSerializableFields(
Reflector reflector,
Type objType,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
IEnumerable<PropertyInfo>? GetSerializableProperties(
Reflector reflector,
Type objType,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
IEnumerable<string> GetAdditionalSerializableFields(
Reflector reflector,
Type objType,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
IEnumerable<string> GetAdditionalSerializableProperties(
Reflector reflector,
Type objType,
BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
ILogger? logger = null);
object? CreateInstance(Reflector reflector, Type type);
object? GetDefaultValue(Reflector reflector, Type type);
}
}