11using System ;
22using System . Collections . Generic ;
3- using System . Linq ;
43using System . Linq . Expressions ;
54using System . Reflection ;
65using Unity . Builder ;
@@ -27,25 +26,23 @@ public PropertyProcessor(IPolicySet policySet)
2726
2827 protected override IEnumerable < PropertyInfo > DeclaredMembers ( Type type )
2928 {
30- #if NETSTANDARD1_0
31- return GetPropertiesHierarchical ( type )
32- . Where ( p =>
33- {
34- if ( ! p . CanWrite ) return false ;
29+ var info = type . GetTypeInfo ( ) ;
30+ while ( null != info )
31+ {
32+ foreach ( var member in info . DeclaredProperties )
33+ {
34+ if ( ! member . CanWrite || 0 != member . GetIndexParameters ( ) . Length )
35+ continue ;
3536
36- var propertyMethod = p . GetSetMethod ( true ) ??
37- p . GetGetMethod ( true ) ;
37+ var setter = member . GetSetMethod ( true ) ;
38+ if ( setter . IsPrivate || setter . IsFamily )
39+ continue ;
3840
39- // Skip static properties and indexers.
40- if ( propertyMethod . IsStatic || p . GetIndexParameters ( ) . Length != 0 )
41- return false ;
41+ yield return member ;
42+ }
4243
43- return true ;
44- } ) ;
45- #else
46- return type . GetProperties ( BindingFlags . Instance | BindingFlags . Public )
47- . Where ( p => p . CanWrite && p . GetIndexParameters ( ) . Length == 0 ) ;
48- #endif
44+ info = info . BaseType ? . GetTypeInfo ( ) ;
45+ }
4946 }
5047
5148 #endregion
@@ -85,29 +82,5 @@ protected override ResolveDelegate<BuilderContext> GetResolverDelegate(PropertyI
8582 }
8683
8784 #endregion
88-
89-
90- #region Implementation
91-
92- #if NETSTANDARD1_0
93- public static IEnumerable < PropertyInfo > GetPropertiesHierarchical ( Type type )
94- {
95- if ( type == null )
96- {
97- return Enumerable . Empty < PropertyInfo > ( ) ;
98- }
99-
100- if ( type == typeof ( object ) )
101- {
102- return type . GetTypeInfo ( ) . DeclaredProperties ;
103- }
104-
105- return type . GetTypeInfo ( )
106- . DeclaredProperties
107- . Concat ( GetPropertiesHierarchical ( type . GetTypeInfo ( ) . BaseType ) ) ;
108- }
109- #endif
110-
111- #endregion
11285 }
11386}
0 commit comments