Skip to content

Commit bb97774

Browse files
committed
Releasing 4.1.0
1 parent d51f265 commit bb97774

File tree

6 files changed

+58
-56
lines changed

6 files changed

+58
-56
lines changed

package.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project>
22

33
<PropertyGroup>
4-
<VersionBase>4.0.3</VersionBase>
4+
<VersionBase>4.1.0</VersionBase>
55
<TargetFrameworks>netstandard2.0;netstandard1.0;netcoreapp2.0;netcoreapp1.0;net47;net46;net45;net40</TargetFrameworks>
66
</PropertyGroup>
77

src/Dependency/Injection/Members/InjectionConstructor.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,9 @@ protected override ConstructorInfo SelectMember(Type type, InjectionMember _)
5050

5151
public override IEnumerable<ConstructorInfo> DeclaredMembers(Type type)
5252
{
53-
#if NETCOREAPP1_0 || NETSTANDARD1_0
54-
return type.GetTypeInfo().DeclaredConstructors
55-
.Where(c => c.IsStatic == false && c.IsPublic);
56-
#else
57-
return type.GetConstructors(BindingFlags.Public | BindingFlags.Instance);
58-
#endif
53+
return type.GetTypeInfo()
54+
.DeclaredConstructors
55+
.Where(ctor => !ctor.IsFamily && !ctor.IsPrivate && !ctor.IsStatic);
5956
}
6057

6158
public override string ToString()

src/Dependency/Injection/Members/InjectionField.cs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,23 +47,12 @@ protected override FieldInfo DeclaredMember(Type type, string name)
4747

4848
public override IEnumerable<FieldInfo> DeclaredMembers(Type type)
4949
{
50-
#if NETCOREAPP1_0 || NETSTANDARD1_0
51-
if (type == null)
50+
foreach (var member in type.GetDeclaredFields())
5251
{
53-
return Enumerable.Empty<FieldInfo>();
52+
if (!member.IsFamily && !member.IsPrivate &&
53+
!member.IsInitOnly && !member.IsStatic)
54+
yield return member;
5455
}
55-
56-
var info = type.GetTypeInfo();
57-
if (type == typeof(object))
58-
{
59-
return info.DeclaredFields;
60-
}
61-
62-
return info.DeclaredFields
63-
.Concat(DeclaredMembers(type.GetTypeInfo().BaseType));
64-
#else
65-
return type.GetFields(BindingFlags.Instance | BindingFlags.Public);
66-
#endif
6756
}
6857

6958
protected override Type MemberType => Selection.FieldType;

src/Dependency/Injection/Members/InjectionMethod.cs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,23 +51,12 @@ protected override MethodInfo SelectMember(Type type, InjectionMember _)
5151

5252
public override IEnumerable<MethodInfo> DeclaredMembers(Type type)
5353
{
54-
#if NETCOREAPP1_0 || NETSTANDARD1_0
55-
if (null == type) return Enumerable.Empty<MethodInfo>();
56-
57-
var info = type.GetTypeInfo();
58-
if (typeof(object) == info.DeclaringType)
54+
foreach (var member in type.GetDeclaredMethods())
5955
{
60-
return info.DeclaredMethods.Where(m => !m.IsStatic)
61-
.Where(m => Name == m.Name);
56+
if (!member.IsFamily && !member.IsPrivate &&
57+
!member.IsStatic && member.Name == Name)
58+
yield return member;
6259
}
63-
64-
return info.DeclaredMethods.Where(m => !m.IsStatic)
65-
.Concat(DeclaredMembers(info.BaseType))
66-
.Where(m => Name == m.Name);
67-
#else
68-
return type.GetMethods(BindingFlags.Public | BindingFlags.Instance)
69-
.Where(m => Name == m.Name);
70-
#endif
7160
}
7261

7362
public override string ToString()

src/Dependency/Injection/Members/InjectionProperty.cs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,32 +43,22 @@ public InjectionProperty(string name, object value)
4343

4444
protected override PropertyInfo DeclaredMember(Type type, string name)
4545
{
46-
#if NETSTANDARD1_0 || NETCOREAPP1_0
47-
return type.GetTypeInfo().GetDeclaredProperty(Selection.Name);
48-
#else
49-
return type.GetProperty(Selection.Name);
50-
#endif
46+
return DeclaredMembers(type).FirstOrDefault(p => p.Name == Selection.Name);
5147
}
5248

5349
public override IEnumerable<PropertyInfo> DeclaredMembers(Type type)
5450
{
55-
#if NETCOREAPP1_0 || NETSTANDARD1_0
56-
if (type == null)
51+
foreach (var member in type.GetDeclaredProperties())
5752
{
58-
return Enumerable.Empty<PropertyInfo>();
59-
}
53+
if (!member.CanWrite || 0 != member.GetIndexParameters().Length)
54+
continue;
6055

61-
var info = type.GetTypeInfo();
62-
if (type == typeof(object))
63-
{
64-
return info.DeclaredProperties;
65-
}
56+
var setter = member.GetSetMethod(true);
57+
if (setter.IsPrivate || setter.IsFamily)
58+
continue;
6659

67-
return info.DeclaredProperties
68-
.Concat(DeclaredMembers(type.GetTypeInfo().BaseType));
69-
#else
70-
return type.GetProperties(BindingFlags.Instance | BindingFlags.Public);
71-
#endif
60+
yield return member;
61+
}
7262
}
7363

7464
protected override Type MemberType => Selection.PropertyType;

src/Extensions/Reflection/TypeReflectionExtensions.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Reflection;
34

45
namespace Unity
@@ -18,5 +19,41 @@ public static Type GetArrayParameterType(this Type typeToReflect, Type[] generic
1819

1920
return 1 == rank ? type.MakeArrayType() : type.MakeArrayType(rank);
2021
}
22+
23+
public static IEnumerable<FieldInfo> GetDeclaredFields(this Type type)
24+
{
25+
var info = type.GetTypeInfo();
26+
while (null != info)
27+
{
28+
foreach (var member in info.DeclaredFields)
29+
yield return member;
30+
31+
info = info.BaseType?.GetTypeInfo();
32+
}
33+
}
34+
35+
public static IEnumerable<PropertyInfo> GetDeclaredProperties(this Type type)
36+
{
37+
var info = type.GetTypeInfo();
38+
while (null != info)
39+
{
40+
foreach (var member in info.DeclaredProperties)
41+
yield return member;
42+
43+
info = info.BaseType?.GetTypeInfo();
44+
}
45+
}
46+
47+
public static IEnumerable<MethodInfo> GetDeclaredMethods(this Type type)
48+
{
49+
var info = type.GetTypeInfo();
50+
while (null != info)
51+
{
52+
foreach (var member in info.DeclaredMethods)
53+
yield return member;
54+
55+
info = info.BaseType?.GetTypeInfo();
56+
}
57+
}
2158
}
2259
}

0 commit comments

Comments
 (0)