diff --git a/ZeroLevel/Services/Extensions/ArrayExtensions.cs b/ZeroLevel/Services/Extensions/ArrayExtensions.cs index 6a08638..0cc355d 100644 --- a/ZeroLevel/Services/Extensions/ArrayExtensions.cs +++ b/ZeroLevel/Services/Extensions/ArrayExtensions.cs @@ -65,7 +65,7 @@ namespace ZeroLevel return false; } - private static bool IsEmptyLocate(T[] array, T[] candidate) + private static bool IsEmptyLocate(this T[] array, T[] candidate) { return array == null || candidate == null @@ -74,7 +74,7 @@ namespace ZeroLevel || candidate.Length > array.Length; } - public static IEnumerable GetRow(T[,] array, int row) + public static IEnumerable GetRow(this T[,] array, int row) { for (int i = 0; i < array.GetLength(1); i++) { @@ -82,6 +82,14 @@ namespace ZeroLevel } } + public static IEnumerable GetColumn(this T[,] array, int column) + { + for (int i = 0; i < array.GetLength(0); i++) + { + yield return array[i, column]; + } + } + public static bool Equals(byte[] first, byte[] second) { if (null == first && null == second) diff --git a/ZeroLevel/Services/ObjectMapping/IMemberInfo.cs b/ZeroLevel/Services/ObjectMapping/IMemberInfo.cs index 1174714..abc58c4 100644 --- a/ZeroLevel/Services/ObjectMapping/IMemberInfo.cs +++ b/ZeroLevel/Services/ObjectMapping/IMemberInfo.cs @@ -1,4 +1,5 @@ using System; +using System.Reflection; namespace ZeroLevel.Services.ObjectMapping { @@ -13,5 +14,6 @@ namespace ZeroLevel.Services.ObjectMapping Type ClrType { get; } Action Setter { get; } Func Getter { get; } + MemberInfo Original { get; } } } \ No newline at end of file diff --git a/ZeroLevel/Services/ObjectMapping/MapFieldInfo.cs b/ZeroLevel/Services/ObjectMapping/MapFieldInfo.cs index e75c762..6eddc28 100644 --- a/ZeroLevel/Services/ObjectMapping/MapFieldInfo.cs +++ b/ZeroLevel/Services/ObjectMapping/MapFieldInfo.cs @@ -12,8 +12,9 @@ namespace ZeroLevel.Services.ObjectMapping public bool IsField { get; set; } public string Name { get; set; } public Type ClrType { get; set; } - public Action Setter { get; set; } - public Func Getter { get; set; } + public Action Setter { get; private set; } + public Func Getter { get; private set; } + public MemberInfo Original { get; private set; } #endregion Properties @@ -57,7 +58,8 @@ namespace ZeroLevel.Services.ObjectMapping { var field = new MapMemberInfo(TypeGetterSetterBuilder.BuildSetter(fieldInfo), TypeGetterSetterBuilder.BuildGetter(fieldInfo)) { - Name = fieldInfo.Name + Name = fieldInfo.Name, + Original = fieldInfo }; field.IsField = true; var type = fieldInfo.FieldType; @@ -69,7 +71,8 @@ namespace ZeroLevel.Services.ObjectMapping { var field = new MapMemberInfo(TypeGetterSetterBuilder.BuildSetter(propertyInfo), TypeGetterSetterBuilder.BuildGetter(propertyInfo)) { - Name = propertyInfo.Name + Name = propertyInfo.Name, + Original = propertyInfo }; field.IsField = false; var type = propertyInfo.PropertyType; diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj index 9f628bd..83ab122 100644 --- a/ZeroLevel/ZeroLevel.csproj +++ b/ZeroLevel/ZeroLevel.csproj @@ -6,16 +6,16 @@ ogoun ogoun - 3.3.5.3 - Collection lazy deserialization + 3.3.5.5 + Update TypeMapper https://github.com/ogoun/Zero/wiki Copyright Ogoun 2021 https://github.com/ogoun/Zero GitHub - 3.3.5.3 - 3.3.5.3 + 3.3.5.5 + 3.3.5.5 AnyCPU;x64;x86 zero.png