@@ -75,15 +75,7 @@ private void DumpCustomAttributes(DumpAllTable dumpTable)
75
75
{
76
76
foreach ( var value in ma . CustomAttributes [ 0 ] . ConstructorArguments )
77
77
{
78
- var serializationType = value . Type . ToSerializationType ( ) ;
79
- attribute . FixedArgs . Add (
80
- new AttFixedArgs ( )
81
- {
82
- Options = ( ( byte ) serializationType ) . ToString ( "X2" ) ,
83
- Numeric = serializationType == nanoSerializationType . ELEMENT_TYPE_STRING ? 0 . ToString ( "X16" ) : ( ( int ) value . Value ) . ToString ( "X16" ) ,
84
- Text = serializationType == nanoSerializationType . ELEMENT_TYPE_STRING ? ( string ) value . Value : "" ,
85
- }
86
- ) ;
78
+ attribute . FixedArgs . Add ( BuildFixedArgsAttribute ( value ) ) ;
87
79
}
88
80
}
89
81
@@ -106,14 +98,7 @@ private void DumpCustomAttributes(DumpAllTable dumpTable)
106
98
{
107
99
foreach ( var value in fa . CustomAttributes [ 0 ] . ConstructorArguments )
108
100
{
109
- attribute . FixedArgs . Add (
110
- new AttFixedArgs ( )
111
- {
112
- Options = ( ( byte ) value . Type . ToSerializationType ( ) ) . ToString ( "X2" ) ,
113
- Numeric = ( ( int ) value . Value ) . ToString ( "X16" ) ,
114
- Text = ""
115
- }
116
- ) ;
101
+ attribute . FixedArgs . Add ( BuildFixedArgsAttribute ( value ) ) ;
117
102
}
118
103
}
119
104
@@ -132,21 +117,43 @@ private void DumpCustomAttributes(DumpAllTable dumpTable)
132
117
{
133
118
foreach ( var value in a . CustomAttributes [ 0 ] . ConstructorArguments )
134
119
{
135
- attribute1 . FixedArgs . Add (
136
- new AttFixedArgs ( )
137
- {
138
- Options = ( ( byte ) value . Type . ToSerializationType ( ) ) . ToString ( "X2" ) ,
139
- Numeric = ( ( int ) value . Value ) . ToString ( "X16" ) ,
140
- Text = ""
141
- }
142
- ) ;
120
+ attribute1 . FixedArgs . Add ( BuildFixedArgsAttribute ( value ) ) ;
143
121
}
144
122
}
145
123
146
124
dumpTable . Attributes . Add ( attribute1 ) ;
147
125
}
148
126
}
149
127
128
+ private AttFixedArgs BuildFixedArgsAttribute ( CustomAttributeArgument value )
129
+ {
130
+ var serializationType = value . Type . ToSerializationType ( ) ;
131
+
132
+ var newArg = new AttFixedArgs ( )
133
+ {
134
+ Options = ( ( byte ) serializationType ) . ToString ( "X2" ) ,
135
+ Numeric = 0 . ToString ( "X16" ) ,
136
+ Text = "" ,
137
+ } ;
138
+
139
+ switch ( serializationType )
140
+ {
141
+ case nanoSerializationType . ELEMENT_TYPE_BOOLEAN :
142
+ newArg . Numeric = ( ( bool ) value . Value ) ? 1 . ToString ( "X16" ) : 0 . ToString ( "X16" ) ;
143
+ break ;
144
+
145
+ case nanoSerializationType . ELEMENT_TYPE_STRING :
146
+ newArg . Text = ( string ) value . Value ;
147
+ break ;
148
+
149
+ default :
150
+ newArg . Numeric = ( ( int ) value . Value ) . ToString ( "X16" ) ;
151
+ break ;
152
+ }
153
+
154
+ return newArg ;
155
+ }
156
+
150
157
private void DumpUserStrings ( DumpAllTable dumpTable )
151
158
{
152
159
// start at 1, because 0 is the empty string entry
0 commit comments