@@ -77,8 +77,6 @@ public abstract class MemberProcessor
7777 #endregion
7878 }
7979
80- public delegate ResolveDelegate < BuilderContext > AttributeResolverFactory ( Attribute attribute , object info , object value = null ) ;
81-
8280 public abstract partial class MemberProcessor < TMemberInfo , TData > : MemberProcessor ,
8381 ISelect < TMemberInfo >
8482 where TMemberInfo : MemberInfo
@@ -98,8 +96,8 @@ protected MemberProcessor(IPolicySet policySet)
9896 // Add Unity attribute factories
9997 AttributeFactories = new [ ]
10098 {
101- new AttributeFactoryNode ( typeof ( DependencyAttribute ) , DependencyResolverFactory ) ,
102- new AttributeFactoryNode ( typeof ( OptionalDependencyAttribute ) , OptionalDependencyResolverFactory ) ,
99+ new AttributeFactoryNode ( typeof ( DependencyAttribute ) , ( a ) => ( ( DependencyResolutionAttribute ) a ) . Name , DependencyResolverFactory ) ,
100+ new AttributeFactoryNode ( typeof ( OptionalDependencyAttribute ) , ( a ) => ( ( DependencyResolutionAttribute ) a ) . Name , OptionalDependencyResolverFactory ) ,
103101 } ;
104102
105103 _policySet = policySet ;
@@ -110,9 +108,9 @@ protected MemberProcessor(IPolicySet policySet, Type attribute)
110108 // Add Unity attribute factories
111109 AttributeFactories = new [ ]
112110 {
113- new AttributeFactoryNode ( attribute , null ) ,
114- new AttributeFactoryNode ( typeof ( DependencyAttribute ) , DependencyResolverFactory ) ,
115- new AttributeFactoryNode ( typeof ( OptionalDependencyAttribute ) , OptionalDependencyResolverFactory ) ,
111+ new AttributeFactoryNode ( attribute , ( a ) => ( a as DependencyResolutionAttribute ) ? . Name , null ) ,
112+ new AttributeFactoryNode ( typeof ( DependencyAttribute ) , ( a ) => ( ( DependencyResolutionAttribute ) a ) . Name , DependencyResolverFactory ) ,
113+ new AttributeFactoryNode ( typeof ( OptionalDependencyAttribute ) , ( a ) => ( ( DependencyResolutionAttribute ) a ) . Name , OptionalDependencyResolverFactory ) ,
116114 } ;
117115 _policySet = policySet ;
118116 }
@@ -122,7 +120,7 @@ protected MemberProcessor(IPolicySet policySet, Type attribute)
122120
123121 #region Public Methods
124122
125- public void Add ( Type type , AttributeResolverFactory resolutionFactory )
123+ public void Add ( Type type , Func < Attribute , string > getName , Func < Attribute , object , object , ResolveDelegate < BuilderContext > > resolutionFactory )
126124 {
127125 for ( var i = 0 ; i < AttributeFactories . Length ; i ++ )
128126 {
@@ -134,7 +132,7 @@ public void Add(Type type, AttributeResolverFactory resolutionFactory)
134132
135133 var factories = new AttributeFactoryNode [ AttributeFactories . Length + 1 ] ;
136134 Array . Copy ( AttributeFactories , factories , AttributeFactories . Length ) ;
137- factories [ AttributeFactories . Length ] = new AttributeFactoryNode ( type , resolutionFactory ) ;
135+ factories [ AttributeFactories . Length ] = new AttributeFactoryNode ( type , getName , resolutionFactory ) ;
138136 AttributeFactories = factories ;
139137 }
140138
@@ -296,11 +294,13 @@ protected virtual ResolveDelegate<BuilderContext> OptionalDependencyResolverFact
296294 public struct AttributeFactoryNode
297295 {
298296 public readonly Type Type ;
299- public AttributeResolverFactory Factory ;
297+ public Func < Attribute , object , object , ResolveDelegate < BuilderContext > > Factory ;
298+ public Func < Attribute , string > Name ;
300299
301- public AttributeFactoryNode ( Type type , AttributeResolverFactory factory )
300+ public AttributeFactoryNode ( Type type , Func < Attribute , string > getName , Func < Attribute , object , object , ResolveDelegate < BuilderContext > > factory )
302301 {
303302 Type = type ;
303+ Name = getName ;
304304 Factory = factory ;
305305 }
306306 }
0 commit comments