Converted to use BuildContext by reference
This commit is contained in:
Родитель
b6933b6552
Коммит
6381e0990b
|
@ -7,8 +7,7 @@ namespace BuildPlanExample
|
|||
{
|
||||
public class FooBuildPlanPolicy : IBuildPlanPolicy
|
||||
{
|
||||
public void BuildUp<TBuilderContext>(ref TBuilderContext context)
|
||||
where TBuilderContext : IBuilderContext
|
||||
public void BuildUp(ref BuilderContext context)
|
||||
{
|
||||
// Resolve requested type
|
||||
var argument = context.Type.GetTypeInfo().GenericTypeArguments[0];
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Unity;
|
||||
using Unity.Builder;
|
||||
using Unity.ObjectBuilder.BuildPlan.DynamicMethod;
|
||||
using Unity.Policy;
|
||||
using Unity.Resolution;
|
||||
using Unity.Storage;
|
||||
|
||||
namespace BuildPlanCreatorExample
|
||||
{
|
||||
|
@ -25,14 +22,13 @@ namespace BuildPlanCreatorExample
|
|||
_policies = policies;
|
||||
}
|
||||
|
||||
public IBuildPlanPolicy CreatePlan<TBuilderContext>(ref TBuilderContext context, INamedType buildKey)
|
||||
where TBuilderContext : IBuilderContext
|
||||
public IBuildPlanPolicy CreatePlan(ref BuilderContext context, INamedType buildKey)
|
||||
{
|
||||
// Make generic factory method for the type
|
||||
var typeToBuild = buildKey.Type.GetTypeInfo().GenericTypeArguments.First();
|
||||
var factoryMethod =
|
||||
_factoryMethod.MakeGenericMethod(typeof(TBuilderContext), typeToBuild)
|
||||
.CreateDelegate(typeof(ResolveDelegate<TBuilderContext>));
|
||||
_factoryMethod.MakeGenericMethod(typeToBuild)
|
||||
.CreateDelegate(typeof(ResolveDelegate<BuilderContext>));
|
||||
// Create policy
|
||||
var creatorPlan = new DynamicMethodBuildPlan(factoryMethod);
|
||||
|
||||
|
@ -42,8 +38,7 @@ namespace BuildPlanCreatorExample
|
|||
return creatorPlan;
|
||||
}
|
||||
|
||||
private static object FactoryMethod<TBuilderContext, TResult>(ref TBuilderContext context)
|
||||
where TBuilderContext : IBuilderContext
|
||||
private static object FactoryMethod<TResult>(ref BuilderContext context)
|
||||
{
|
||||
// Resolve requested type
|
||||
var service = (TResult)context.Resolve(typeof(TResult), context.Name);
|
||||
|
|
Загрузка…
Ссылка в новой задаче