diff options
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs b/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs deleted file mode 100644 index dfabacfea..000000000 --- a/Software/Visual_Studio/PPC/Tango.PPC.Shared/SQL/RemoteSqlRow.cs +++ /dev/null @@ -1,153 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Diagnostics; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Tango.BL.Entities; - -namespace Tango.PPC.Shared.SQL -{ - /// <summary> - /// Represents a <see cref="RemoteSqlDataSet"/> row. - /// </summary> - /// <example> - /// <para> - /// <i> - /// The following example demonstrates how to set the connected machine's demo state and query for the connected machine's jobs. - /// </i> - /// </para> - /// <code lang="C#" source="../Tango.FSE.Procedures/Examples/Sql/Program.cs" title="Remote SQL" region="Example" /> - /// </example> - public class RemoteSqlRow - { - private Func<String, Object> _getFuncKey; - private Func<int, Object> _getFuncIndex; - - /// <summary> - /// Gets or sets the row values. - /// </summary> - public List<Object> Values { get; set; } - - /// <summary> - /// Initializes a new instance of the <see cref="RemoteSqlRow"/> class. - /// </summary> - public RemoteSqlRow() - { - Values = new List<object>(); - } - - /// <summary> - /// Gets a row value by its column name. - /// </summary> - /// <param name="columnName">Name of the column.</param> - /// <returns>The column value.</returns> - public Object Get(String columnName) - { - return _getFuncKey.Invoke(columnName); - } - - /// <summary> - /// Gets a row value by its column index. - /// </summary> - /// <param name="columnIndex">Index of the column.</param> - /// <returns>The column value.</returns> - public Object Get(int columnIndex) - { - return _getFuncIndex.Invoke(columnIndex); - } - - /// <summary> - /// Gets a row value as type T by its column name. - /// </summary> - /// <typeparam name="T">Expected column type.</typeparam> - /// <param name="columnName">Name of the column.</param> - /// <returns>The column value.</returns> - public T Get<T>(String columnName) - { - var value = _getFuncKey.Invoke(columnName); - - if (typeof(T) != value.GetType()) - { - return (T)Convert.ChangeType(value, typeof(T)); - } - else - { - return (T)value; - } - } - - /// <summary> - /// Gets a row value by its column index. - /// </summary> - /// <typeparam name="T">Expected column type</typeparam> - /// <param name="columnIndex">Index of the column.</param> - /// <returns>The column value.</returns> - public T Get<T>(int columnIndex) - { - var value = _getFuncIndex.Invoke(columnIndex); - - if (typeof(T) != value.GetType()) - { - return (T)Convert.ChangeType(value, typeof(T)); - } - else - { - return (T)value; - } - } - - internal void Init(Func<String, Object> getFuncKey, Func<int, Object> getFuncIndex) - { - _getFuncKey = getFuncKey; - _getFuncIndex = getFuncIndex; - } - - /// <summary> - /// Returns a <see cref="System.String" /> that represents this instance. - /// </summary> - /// <returns> - /// A <see cref="System.String" /> that represents this instance. - /// </returns> - public override string ToString() - { - return String.Join(", ", Values); - } - - /// <summary> - /// Creates an object of type T and maps this row to it based on its properties decorated with <see cref="ColumnAttribute"/>. - /// </summary> - /// <typeparam name="T"></typeparam> - /// <returns></returns> - public T Map<T>() where T : class, new() - { - var obj = Activator.CreateInstance<T>(); - Map<T>(obj); - return obj; - } - - /// <summary> - /// Maps this row to the specified object based on its properties decorated with <see cref="ColumnAttribute"/>. - /// </summary> - /// <typeparam name="T">Model type</typeparam> - /// <param name="obj">The object.</param> - public void Map<T>(T obj) where T : class - { - foreach (var prop in typeof(T).GetPropertiesWithAttribute<ColumnAttribute>()) - { - try - { - var columnName = prop.GetCustomAttribute<ColumnAttribute>().Name; - var value = Get(columnName).ToStringSafe(); - prop.SetValue(obj, Convert.ChangeType(value, prop.PropertyType)); - } - catch (Exception ex) - { - Debug.WriteLine(ex); - } - } - } - } -} |
