diff --git a/Extensions/XReferenceExtensions.cs b/Extensions/XReferenceExtensions.cs index f9caa8d..ce975b7 100644 --- a/Extensions/XReferenceExtensions.cs +++ b/Extensions/XReferenceExtensions.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using xCommons.Extensions; using xDataService.Models; @@ -69,12 +70,22 @@ namespace xDataService.Extensions var parts = source.Split(splitter.Value); if (parts.Count() >= 3) { + // + T referencedTo; + try + { + referencedTo = (T)Convert.ChangeType(parts[1], typeof(T)); + } catch + { + referencedTo = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(parts[1]); + } + // // Parse String Parts ... result = new XReference { + ReferencedTo = referencedTo, Index = (int)Convert.ChangeType(parts[2], typeof(int)), - ReferencedTo = (T)Convert.ChangeType(parts[1], typeof(T)), ProvidedFor = (string)Convert.ChangeType(parts[0], typeof(string)), }; } @@ -96,7 +107,7 @@ namespace xDataService.Extensions var result = string.Empty; // - if (source.IsNull() && source.HasChild()) + if (!source.IsNull() && source.HasChild()) { // var stringList = new List(); @@ -147,7 +158,7 @@ namespace xDataService.Extensions public static IList> ParseXReferenceList(this string source) { // - IList> result = new List>(); + var result = new List>(); // if (!source.IsNullOrEmpty())