- Code: Select all
public static DatabaseObject Clone(this DatabaseObject obj)
{
var clone = new DatabaseObject();
foreach (var item in obj)
{
var databaseObj = item.Value as DatabaseObject;
if (databaseObj != null)
{
clone.Set(item.Key, databaseObj.Clone());
}
else
{
var databaseArray = item.Value as DatabaseArray;
if (databaseArray != null)
{
clone.Set(item.Key, databaseArray.Clone());
}
else
{
clone.Set(item.Key, (dynamic)item.Value);
}
}
}
return clone;
}
Now has to be:
- Code: Select all
public static DatabaseObject Clone(this DatabaseObject obj)
{
var clone = new DatabaseObject();
foreach (var item in obj)
{
var databaseObj = item.Value as DatabaseObject;
if (databaseObj != null)
{
clone.Set(item.Key, databaseObj.Clone());
}
else
{
var databaseArray = item.Value as DatabaseArray;
if (databaseArray != null)
{
clone.Set(item.Key, databaseArray.Clone());
}
else
{
if (item.Value is string)
{
clone.Set(item.Key, (string)item.Value);
}
else if (item.Value is int)
{
clone.Set(item.Key, (int)item.Value);
}
else if (item.Value is uint)
{
clone.Set(item.Key, (uint)item.Value);
}
else if (item.Value is long)
{
clone.Set(item.Key, (long)item.Value);
}
else if (item.Value is bool)
{
clone.Set(item.Key, (bool)item.Value);
}
else if (item.Value is float)
{
clone.Set(item.Key, (float)item.Value);
}
else if (item.Value is double)
{
clone.Set(item.Key, (double)item.Value);
}
else if (item.Value is byte[])
{
clone.Set(item.Key, (byte[])item.Value);
}
else if (item.Value is DateTime)
{
clone.Set(item.Key, (DateTime)item.Value);
}
}
}
}
return clone;
}