本文整理汇总了C#中Registration.BuildExpression方法的典型用法代码示例。如果您正苦于以下问题:C# Registration.BuildExpression方法的具体用法?C# Registration.BuildExpression怎么用?C# Registration.BuildExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Registration
的用法示例。
在下文中一共展示了Registration.BuildExpression方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReplaceOriginalExpression
private void ReplaceOriginalExpression(Registration decoratorRegistration)
{
this.e.Expression = decoratorRegistration.BuildExpression(this.e.InstanceProducer);
this.e.ReplacedRegistration = decoratorRegistration;
this.e.InstanceProducer.IsDecorated = true;
// Must be called after calling BuildExpression, because otherwise we won't have any relationships
this.MarkDecorateeFactoryRelationshipAsInstanceCreationDelegate(
decoratorRegistration.GetRelationships());
}
示例2: BuildDecoratorExpression
private Expression BuildDecoratorExpression(out Registration decoratorRegistration)
{
this.ThrowWhenDecoratorNeedsAFunc();
this.ThrownWhenLifestyleIsNotSupported();
ParameterExpression parameter = Expression.Parameter(this.registeredServiceType, "decoratee");
decoratorRegistration = this.CreateRegistrationForUncontrolledCollection(parameter);
Expression parameterizedDecoratorExpression =
decoratorRegistration.BuildExpression(this.e.InstanceProducer);
// TODO: Optimize for performance by using a dynamic assembly where possible.
Delegate wrapInstanceWithDecorator =
this.BuildDecoratorWrapper(parameter, parameterizedDecoratorExpression)
.Compile();
Expression originalEnumerableExpression = this.e.Expression;
if (originalEnumerableExpression is ConstantExpression)
{
var collection = ((ConstantExpression)originalEnumerableExpression).Value as IEnumerable;
return this.BuildDecoratorEnumerableExpressionForConstantEnumerable(wrapInstanceWithDecorator,
collection);
}
else
{
return this.BuildDecoratorEnumerableExpressionForNonConstantExpression(
wrapInstanceWithDecorator, originalEnumerableExpression);
}
}
开发者ID:khellang,项目名称:SimpleInjector,代码行数:32,代码来源:ContainerUncontrolledServicesDecoratorInterceptor.cs
示例3: ReplaceOriginalExpression
private void ReplaceOriginalExpression(Registration decoratorRegistration)
{
this.e.Expression = decoratorRegistration.BuildExpression(this.e.InstanceProducer);
this.e.ReplacedRegistration = decoratorRegistration;
this.e.InstanceProducer.IsDecorated = true;
}