public object MarshallToBike(object dotNetObject)
{
if (dotNetObject == null || dotNetObject is BikeObject)
return dotNetObject;
if (dotNetObject is bool)
return new BikeBoolean((bool)dotNetObject);
if (dotNetObject is char)
return new BikeString(dotNetObject.ToString());
if (dotNetObject is string)
return new BikeString((string)dotNetObject);
if (IsNumber(dotNetObject))
return new BikeNumber(Convert.ToDecimal(dotNetObject));
if (dotNetObject is Array)
{
var ba = new BikeArray();
var arr = (Array)dotNetObject;
for (int i = 0; i < arr.Length; i++)
{
ba.Value.Add(MarshallToBike(arr.GetValue(i)));
}
return ba;
}
return dotNetObject;
}