diff --git a/ConfigurationTests/ConfigurationTests.csproj b/ConfigurationTests/ConfigurationTests.csproj
index c638033..8c4b742 100644
--- a/ConfigurationTests/ConfigurationTests.csproj
+++ b/ConfigurationTests/ConfigurationTests.csproj
@@ -5,6 +5,10 @@
netcoreapp2.2
+
+
+
+
diff --git a/ConfigurationTests/Program.cs b/ConfigurationTests/Program.cs
index 233b626..3c29227 100644
--- a/ConfigurationTests/Program.cs
+++ b/ConfigurationTests/Program.cs
@@ -1,11 +1,15 @@
-using System;
+using BaGet.Protocol;
+using NuGet.Versioning;
+using System;
+using System.IO;
+using System.Net;
+using System.Net.Http;
using ZeroLevel;
namespace ConfigurationTests
{
class Program
- {
-
+ {
static void Main(string[] args)
{
var config = Configuration.ReadSetFromIniFile("config.ini").Bind();
diff --git a/ZeroLevel.sln b/ZeroLevel.sln
index a074370..7114111 100644
--- a/ZeroLevel.sln
+++ b/ZeroLevel.sln
@@ -33,7 +33,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ZeroNetworkMonitor", "ZeroN
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConfigurationTests", "ConfigurationTests\ConfigurationTests.csproj", "{E37785CE-E75A-49FB-B17F-16A0F2C6D656}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DependencyInjectionTests", "DependencyInjectionTests\DependencyInjectionTests.csproj", "{665B38E3-A5F2-4AD0-946B-209D80C1AA40}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DependencyInjectionTests", "DependencyInjectionTests\DependencyInjectionTests.csproj", "{665B38E3-A5F2-4AD0-946B-209D80C1AA40}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/ZeroLevel/Services/Config/BaseConfiguration.cs b/ZeroLevel/Services/Config/BaseConfiguration.cs
index 066dac5..990de06 100644
--- a/ZeroLevel/Services/Config/BaseConfiguration.cs
+++ b/ZeroLevel/Services/Config/BaseConfiguration.cs
@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
+using System.Net;
using ZeroLevel.Services.Collections;
using ZeroLevel.Services.ObjectMapping;
using ZeroLevel.Services.Reflection;
@@ -501,6 +502,26 @@ namespace ZeroLevel.Services.Config
}
member.Setter(instance, collectionBuilder.Complete());
}
+ else if (TypeHelpers.IsEnum(member.ClrType))
+ {
+ var value = Enum.Parse(member.ClrType, First(member.Name));
+ member.Setter(instance, value);
+ }
+ else if (TypeHelpers.IsUri(member.ClrType))
+ {
+ var uri = new Uri(First(member.Name));
+ member.Setter(instance, uri);
+ }
+ else if (TypeHelpers.IsIpEndPoint(member.ClrType))
+ {
+ var ep = ZeroLevel.Network.NetUtils.CreateIPEndPoint(First(member.Name));
+ member.Setter(instance, ep);
+ }
+ else if (member.ClrType == typeof(IPAddress))
+ {
+ var ip = IPAddress.Parse(First(member.Name));
+ member.Setter(instance, ip);
+ }
else
{
member.Setter(instance, First(member.Name));
diff --git a/ZeroLevel/Services/Extensions/EnumerableExtensions.cs b/ZeroLevel/Services/Extensions/EnumerableExtensions.cs
index 2da284e..4acd2fc 100644
--- a/ZeroLevel/Services/Extensions/EnumerableExtensions.cs
+++ b/ZeroLevel/Services/Extensions/EnumerableExtensions.cs
@@ -31,22 +31,5 @@ namespace ZeroLevel
{
return !IsEmpty(collection);
}
-
- public static IEnumerable> Chunkify(this IEnumerable source, int size)
- {
- if (source == null)
- {
- yield break;
- }
- if (size <= 0)
- {
- throw new ArgumentException("chunkSize must be greater than 0.");
- }
- while (source.Any())
- {
- yield return source.Take(size);
- source = source.Skip(size);
- }
- }
}
}
\ No newline at end of file
diff --git a/ZeroLevel/Services/Extensions/LinqExtension.cs b/ZeroLevel/Services/Extensions/LinqExtension.cs
index 72e178a..ebe42f5 100644
--- a/ZeroLevel/Services/Extensions/LinqExtension.cs
+++ b/ZeroLevel/Services/Extensions/LinqExtension.cs
@@ -1,7 +1,6 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
-namespace ZeroLevel
+namespace System.Linq
{
public static class LinqExtension
{
@@ -20,5 +19,35 @@ namespace ZeroLevel
}
}
}
+
+ public static IList Materialize(this IEnumerable source)
+ {
+ if (source is IList)
+ {
+ // Already a list, use it as is
+ return (IList)source;
+ }
+ else
+ {
+ // Not a list, materialize it to a list
+ return source.ToList();
+ }
+ }
+ public static IEnumerable> Chunkify(this IEnumerable source, int size)
+ {
+ if (source == null)
+ {
+ yield break;
+ }
+ if (size <= 0)
+ {
+ throw new ArgumentException("chunkSize must be greater than 0.");
+ }
+ while (source.Any())
+ {
+ yield return source.Take(size);
+ source = source.Skip(size);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/ZeroLevel/Services/Reflection/TypeHelpers.cs b/ZeroLevel/Services/Reflection/TypeHelpers.cs
index c1679f3..9d0ebed 100644
--- a/ZeroLevel/Services/Reflection/TypeHelpers.cs
+++ b/ZeroLevel/Services/Reflection/TypeHelpers.cs
@@ -28,6 +28,11 @@ namespace ZeroLevel.Services.Reflection
return IsAssignableToGenericType(baseType, genericType);
}
+ public static bool IsEnum(Type type)
+ {
+ return type.Return(t => t.IsEnum, false);
+ }
+
public static bool IsArray(Type type)
{
return type.Return(t => t.IsArray, false);
diff --git a/ZeroLevel/Services/Serialization/ISerializer.cs b/ZeroLevel/Services/Serialization/ISerializer.cs
new file mode 100644
index 0000000..b9a085f
--- /dev/null
+++ b/ZeroLevel/Services/Serialization/ISerializer.cs
@@ -0,0 +1,8 @@
+namespace ZeroLevel.Services.Serialization
+{
+ public interface ISerializer
+ {
+ void Serialize(IBinaryWriter writer);
+ object Deserialize(IBinaryReader writer);
+ }
+}
\ No newline at end of file
diff --git a/ZeroLevel/Services/Serialization/MessageSerializer.cs b/ZeroLevel/Services/Serialization/MessageSerializer.cs
index 89b80fa..b28cd10 100644
--- a/ZeroLevel/Services/Serialization/MessageSerializer.cs
+++ b/ZeroLevel/Services/Serialization/MessageSerializer.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Concurrent;
using System.Collections.Generic;
namespace ZeroLevel.Services.Serialization
diff --git a/ZeroLevel/ZeroLevel.csproj b/ZeroLevel/ZeroLevel.csproj
index e570fa0..af275d9 100644
--- a/ZeroLevel/ZeroLevel.csproj
+++ b/ZeroLevel/ZeroLevel.csproj
@@ -6,17 +6,16 @@
ogoun
ogoun
- 3.1.5.0
- Append Configuration and ConfigurationSet Bind to object
-Append runtime collection and array builders (CollectionFactory)
+ 3.1.6.0
+ Fixes
https://github.com/ogoun/Zero/wiki
Copyright Ogoun 2019
https://opensource.org/licenses/MIT
https://raw.githubusercontent.com/ogoun/Zero/master/zero.png
https://github.com/ogoun/Zero
GitHub
- 3.1.5
- 3.1.5.0
+ 3.1.6
+ 3.1.6.0
AnyCPU;x64