From 4417c2eccb3795330144afa39e3bf271652bd31f Mon Sep 17 00:00:00 2001 From: Victoria Plitt Date: Mon, 9 Dec 2019 16:59:59 +0200 Subject: Dispenser Jid - Test examples. Create DispenserAnalyser utility project. Seal test. --- Software/Visual_Studio/Tango.CSV/CsvFileReader.cs | 29 +++++++++++++++++----- .../Visual_Studio/Tango.CSV/CsvOrderAttribute.cs | 19 ++++++++++++++ Software/Visual_Studio/Tango.CSV/Tango.CSV.csproj | 1 + 3 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 Software/Visual_Studio/Tango.CSV/CsvOrderAttribute.cs (limited to 'Software/Visual_Studio/Tango.CSV') diff --git a/Software/Visual_Studio/Tango.CSV/CsvFileReader.cs b/Software/Visual_Studio/Tango.CSV/CsvFileReader.cs index 6d1deded2..ec5b07630 100644 --- a/Software/Visual_Studio/Tango.CSV/CsvFileReader.cs +++ b/Software/Visual_Studio/Tango.CSV/CsvFileReader.cs @@ -240,22 +240,39 @@ namespace Tango.CSV /// The c. /// if set to true [static member]. /// - private static Action FindSetter(string c, bool staticMember) + private static Action FindSetter(string c, bool staticMember, int? index = null) { var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.IgnoreCase | (staticMember ? BindingFlags.Static : BindingFlags.Instance); Action action = null; + PropertyInfo pi = typeof(T).GetProperty(c, flags); if (pi != null) { var pFunc = StringToObject(pi.PropertyType); action = EmitSetValueAction(pi, pFunc); } - FieldInfo fi = typeof(T).GetField(c, flags); - if (fi != null) + + if (action == null) + { + FieldInfo fi = typeof(T).GetField(c, flags); + if (fi != null) + { + var fFunc = StringToObject(fi.FieldType); + action = EmitSetValueAction(fi, fFunc); + } + } + + if (action == null && index != null) { - var fFunc = StringToObject(fi.FieldType); - action = EmitSetValueAction(fi, fFunc); + var propByIndex = typeof(T).GetProperties(flags).SingleOrDefault(x => x.GetCustomAttribute() != null && x.GetCustomAttribute().Index == index); + + if (propByIndex != null) + { + var pFunc = StringToObject(propByIndex.PropertyType); + action = EmitSetValueAction(propByIndex, pFunc); + } } + return action; } @@ -292,7 +309,7 @@ namespace Tango.CSV Action action = null; if (columnName.IndexOf(' ') >= 0) columnName = columnName.Replace(" ", ""); - action = FindSetter(columnName, false) ?? FindSetter(columnName, true); + action = FindSetter(columnName, false, i) ?? FindSetter(columnName, true, i); list.Add(action); } diff --git a/Software/Visual_Studio/Tango.CSV/CsvOrderAttribute.cs b/Software/Visual_Studio/Tango.CSV/CsvOrderAttribute.cs new file mode 100644 index 000000000..cf04334cb --- /dev/null +++ b/Software/Visual_Studio/Tango.CSV/CsvOrderAttribute.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.CSV +{ + [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)] + public class CsvOrderAttribute : Attribute + { + public int Index { get; set; } + + public CsvOrderAttribute(int index) + { + Index = index; + } + } +} diff --git a/Software/Visual_Studio/Tango.CSV/Tango.CSV.csproj b/Software/Visual_Studio/Tango.CSV/Tango.CSV.csproj index eee9649e6..c3e455ff1 100644 --- a/Software/Visual_Studio/Tango.CSV/Tango.CSV.csproj +++ b/Software/Visual_Studio/Tango.CSV/Tango.CSV.csproj @@ -85,6 +85,7 @@ + -- cgit v1.3.1