private void WriteListWithValues(Type ft, System.Collections.IList list)
{
//Console.Out.WriteLine("WriteListWithValues() started");
ft = ft.GetGenericArguments()[0];
List<string> valuelist = new List<string>();
FieldInfo fieldValue = ft.GetField("Value");
for (int i = 0; i < list.Count; i++)
{
object elem = list[i];
if (elem != null) // should never be null, but be safe
{
elem = fieldValue.GetValue(elem);
if (elem is byte[])
{
// IfcPixelTexture.Pixels
if (i == 0)
Console.Out.WriteLine("MESSAGE-CHECK: Write IfcBinary 2");
byte[] bytes = (byte[])elem;
char[] s_hexchar = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
StringBuilder sb = new StringBuilder(bytes.Length * 2);
for (int z = 0; z < bytes.Length; z++)
{
byte b = bytes[z];
sb.Append(s_hexchar[b / 0x10]);
sb.Append(s_hexchar[b % 0x10]);
}
valuelist.Add(sb.ToString());
}
else
{
//Simple list: like an IfcCartesianPoint
string encodedvalue = System.Security.SecurityElement.Escape(elem.ToString());
valuelist.Add(encodedvalue);
}
}
}
Console.Out.WriteLine("Message: Creating WriteListWithValues with XSDType : " + fieldValue.FieldType.Name);
//Console.Out.WriteLine("Warning: Creating WriteListWithValues with XSDType : " + fieldValue.GetType().Name);
ListObject newListObject = GetListObject(ft.Name + "_List_", ft.Name, valuelist, fieldValue.FieldType.Name);
m_writer.Write("inst:" + newListObject.URI);
//Console.Out.WriteLine("WriteListWithValues() finished");
}