Erstmal danke für die ganzen hilfreichen Antworten!
Und zu @dot:
Ich brauche dies, um die Bytelänge eines jeden Typs zu ermitteln:
hier der Code: Und dazu taucht noch ein Problem auf, bei der Überprüfung auf: type.IsBuiltInyType(// hier habe ich jetzt einen integer drin)
liefert er mi false?
Wieso, aber schaut selbst.
|
C#-Quelltext
|
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
|
public static IEnumerable<byte[]> GetBytes(object current)
{
var type = current.GetType();
if (current is IEnumerable && !(current is IDictionary))
{
var collection = (IEnumerable)current;
foreach (var item in collection)
{
return GetBytes(item);
}
}
if (current is IDictionary)
{
var collection = (IDictionary)current;
foreach (DictionaryEntry item in collection)
{
return GetBytes(item.Value);
}
}
if (type.IsBuiltInType(current)) // "IsBuiltInType" function does not work
{
_blocks.Add(ToBytes(current));
return _blocks;
}
var fields = type.GetFields();
foreach (var field in fields)
{
bool customType = !type.IsBuiltInType(field.GetValue(current));
if (customType)
return GetBytes(field);
var obj = field.GetValue(current);
_memberBytes = ToBytes(obj);
_blocks.Add(_memberBytes);
}
return _blocks;
}
|
Ps: "ToBytes" ist eine private Funktion, die nur die übergebenen values in ein bytearray umwandelt