|
|
|
@ -1,28 +1,28 @@
|
|
|
|
|
using System; |
|
|
|
|
using System.Collections; |
|
|
|
|
using System.Collections.Generic; |
|
|
|
|
|
|
|
|
|
namespace Tools.ExcelResolver.Editor |
|
|
|
|
{ |
|
|
|
|
internal class TList : TType |
|
|
|
|
{ |
|
|
|
|
internal override Type RealType => typeof(List<int>); |
|
|
|
|
internal override string FieldWriteFormat => "List<int>"; |
|
|
|
|
internal override object DefaultValue => new List<int>(); |
|
|
|
|
internal override Type RealType => typeof(List<>).MakeGenericType(InnerType.RealType); |
|
|
|
|
internal override string FieldWriteFormat => $"List<{InnerType.RealType.Name}>"; |
|
|
|
|
internal override object DefaultValue => Activator.CreateInstance(typeof(List<>).MakeGenericType(InnerType.RealType)); |
|
|
|
|
|
|
|
|
|
internal TType InnerType { get; set; } |
|
|
|
|
|
|
|
|
|
internal override bool String2TType(string typeText) |
|
|
|
|
{ |
|
|
|
|
var split = typeText.Split('|'); |
|
|
|
|
if (split.Length != 2) |
|
|
|
|
var split = typeText.Split(','); |
|
|
|
|
if (split.Length < 2 || !string.Equals(split[0], "list", StringComparison.OrdinalIgnoreCase)) |
|
|
|
|
{ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!string.Equals(split[0], "list", StringComparison.OrdinalIgnoreCase) || !string.Equals(split[1], "int", StringComparison.OrdinalIgnoreCase)) |
|
|
|
|
{ |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
InnerType = ExcelResolverUtil.GetTTypeByString(split[1]); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
return InnerType != null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
internal override object TryParseFrom(string cellText) |
|
|
|
@ -30,16 +30,17 @@ namespace Tools.ExcelResolver.Editor
|
|
|
|
|
var split = cellText.Split('|'); |
|
|
|
|
if (split.Length > 0) |
|
|
|
|
{ |
|
|
|
|
var list = new List<int>(); |
|
|
|
|
var list = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(InnerType.RealType)); |
|
|
|
|
foreach (var s in split) |
|
|
|
|
{ |
|
|
|
|
if (int.TryParse(s, out var result)) |
|
|
|
|
var parsedValue = InnerType.TryParseFrom(s); |
|
|
|
|
if (parsedValue != null) |
|
|
|
|
{ |
|
|
|
|
list.Add(result); |
|
|
|
|
list.Add(parsedValue); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
return null; |
|
|
|
|
return null; // 任意一个解析失败则返回null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|