当前位置: 首页>>代码示例>>C#>>正文


C# Registration.BuildExpression方法代码示例

本文整理汇总了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());
        }
开发者ID:BrettJaner,项目名称:SimpleInjector,代码行数:12,代码来源:ServiceDecoratorExpressionInterceptor.cs

示例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;
        }
开发者ID:virasak,项目名称:SimpleInjector,代码行数:8,代码来源:ServiceDecoratorExpressionInterceptor.cs


注:本文中的Registration.BuildExpression方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。