diff --git a/GBase/Helpers/Enumerables.cs b/GBase/Helpers/Enumerables.cs
index 1c4bc06..cf9563d 100644
--- a/GBase/Helpers/Enumerables.cs
+++ b/GBase/Helpers/Enumerables.cs
@@ -6,6 +6,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using System.Reflection;
using System.Text;
using GBase.Exceptions;
using GBase.Interfaces;
@@ -26,7 +27,10 @@ namespace GBase.Helpers
StringBuilder @string = new StringBuilder();
foreach (var item in enumerable)
{
- @string.Append($"{item}{ENUMERABLE_STRING_DIVIDER}");
+ if (item is IGBaseObject gBaseObject)
+ @string.Append($"{gBaseObject.Key}{ENUMERABLE_STRING_DIVIDER}");
+ else
+ @string.Append($"{item}{ENUMERABLE_STRING_DIVIDER}");
}
char lastChar = @string[^1];
@@ -41,9 +45,10 @@ namespace GBase.Helpers
///
/// The
/// The given
+ ///
/// An of
/// Interface was passed to an
- public static TEnumerable ConvertToGBaseEnumerable(string @string)
+ public static TEnumerable ConvertToGBaseEnumerable(string @string, IGBase gBase)
{
//get generic type parameter of TEnumerable
Type genericType = typeof(TEnumerable).GetGenericArguments()[0];
@@ -61,9 +66,16 @@ namespace GBase.Helpers
if (genericType.IsInterface)
throw new InterfaceEnumerablePassedException(genericType);
- IGBaseObject gBaseObject = (IGBaseObject) Activator.CreateInstance(genericType);
- gBaseObject.InitializeFromString(value);
- item = gBaseObject;
+ if (!int.TryParse(value, out int key))
+ throw new InvalidKeyException("Key is not an integer.");
+
+ //TODO: What to do when this table isn't initialized yet?
+ item = GenericMethodCaller.Call(gBase, nameof(IGBase.GetEntryForKey),
+ BindingFlags.Public | BindingFlags.Instance, genericType, key);
+
+ // IGBaseObject gBaseObject = (IGBaseObject) Activator.CreateInstance(genericType);
+ // gBaseObject.InitializeFromString(value);
+ // item = gBaseObject;
}
else
item = Convert.ChangeType(value, genericType);