+ internal void SetHeaderValue (object ob, SoapHeader header)
+ {
+ object value = header;
+ if (Custom && HeaderType.IsArray)
+ {
+ SoapUnknownHeader uheader = header as SoapUnknownHeader;
+ SoapUnknownHeader[] array = (SoapUnknownHeader[]) GetHeaderValue (ob);
+ if (array == null || array.Length == 0) {
+ value = new SoapUnknownHeader[] { uheader };
+ }
+ else {
+ SoapUnknownHeader[] newArray = new SoapUnknownHeader [array.Length+1];
+ Array.Copy (array, newArray, array.Length);
+ newArray [array.Length] = uheader;
+ value = newArray;
+ }
+ }
+
+ if (member is PropertyInfo)
+ ((PropertyInfo) member).SetValue (ob, value, null);
+ else
+ ((FieldInfo) member).SetValue (ob, value);
+ }
+
+ public SoapHeaderDirection Direction
+ {
+ get { return direction; }