@@ -972,6 +972,17 @@ public Factory ResolveFactory(Request request)
972
972
: ThrowUnableToResolveOrGetDefault(request, factory);
973
973
}
974
974
975
+ /// <inheritdoc />
976
+ public Factory ResolveFactory(ServiceInfo serviceInfo) =>
977
+ ResolveFactory(Request.Create(this, serviceInfo));
978
+
979
+ /// <inheritdoc />
980
+ public Expression ResolveExpression(ServiceInfo serviceInfo)
981
+ {
982
+ var request = Request.Create(this, serviceInfo);
983
+ return ResolveFactory(request)?.GetExpressionOrDefault(request);
984
+ }
985
+
975
986
internal static T ThrowUnableToResolveOrGetDefault<T>(Request request, T defaultResult)
976
987
{
977
988
if (request.IfUnresolved == IfUnresolved.Throw)
@@ -9574,8 +9585,7 @@ public static ServiceDetails OfServiceKey(object serviceKey) =>
9574
9585
/// <summary>Creates new details out of provided settings and not null `serviceKey`.</summary>
9575
9586
[MethodImpl((MethodImplOptions)256)]
9576
9587
public static ServiceDetails WithServiceKey(ServiceDetails d, object serviceKey) =>
9577
- new ServiceDetails(d.RequiredServiceType, d.IfUnresolved, serviceKey, d.MetadataKey, d.Metadata, d.DefaultValue,
9578
- hasCustomValue: false);
9588
+ new ServiceDetails(d.RequiredServiceType, d.IfUnresolved, serviceKey, d.MetadataKey, d.Metadata, d.DefaultValue, hasCustomValue: false);
9579
9589
9580
9590
/// <summary>Service type to search in registry. Should be assignable to user requested service type.</summary>
9581
9591
public readonly Type RequiredServiceType;
@@ -14995,11 +15005,20 @@ IContainer With(IResolverContext parent, Rules rules, IScopeContext scopeContext
14995
15005
/// You may use Factory <see cref="Setup.AsResolutionRoot"/>.</summary>
14996
15006
GeneratedExpressions GenerateResolutionExpressions(Func<IEnumerable<ServiceRegistrationInfo>, IEnumerable<ServiceInfo>> getRoots = null, bool allowRuntimeState = false);
14997
15007
14998
- /// <summary>Searches for requested factory in registry, and then using <see cref="DryIoc.Rules.UnknownServiceResolvers"/>.</summary>
14999
- /// <param name="request">Factory request .</param >
15000
- /// <returns>Found factory, otherwise null if <see cref="Request.IfUnresolved"/> is set to <see cref="IfUnresolved.ReturnDefault"/>.</returns>
15008
+ /// <summary>Searches for the requested factory in registry or in the Dynamic registrations.
15009
+ /// Plus generates the closed-generic factory for the found open-generic one .</summary >
15010
+ /// <returns>Resolved factory, otherwise null if <see cref="Request.IfUnresolved"/> is set to <see cref="IfUnresolved.ReturnDefault"/>.</returns>
15001
15011
Factory ResolveFactory(Request request);
15002
15012
15013
+ /// <summary>Searches for the requested factory specified by the `ServiceInfo` in registry or in the Dynamic registrations.
15014
+ /// Plus generates the closed-generic factory for the found open-generic one.</summary>
15015
+ /// <returns>Resolved factory, otherwise null if <see cref="Request.IfUnresolved"/> is set to <see cref="IfUnresolved.ReturnDefault"/>.</returns>
15016
+ Factory ResolveFactory(ServiceInfo serviceInfo);
15017
+
15018
+ /// <summary>Resolves the factory and then gets the result expression</summary>
15019
+ /// <returns>Resolved expression, otherwise null if <see cref="Request.IfUnresolved"/> is set to <see cref="IfUnresolved.ReturnDefault"/>.</returns>
15020
+ Expression ResolveExpression(ServiceInfo serviceInfo);
15021
+
15003
15022
/// <summary>Searches for registered service factory and returns it, or null if not found.
15004
15023
/// Will use <see cref="DryIoc.Rules.FactorySelector"/> if specified.</summary>
15005
15024
/// <param name="request">Factory request.</param>
0 commit comments