• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# InstanceProducer类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中InstanceProducer的典型用法代码示例。如果您正苦于以下问题:C# InstanceProducer类的具体用法?C# InstanceProducer怎么用?C# InstanceProducer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



InstanceProducer类属于命名空间,在下文中一共展示了InstanceProducer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ThrowWhenProviderToRegisterOverlapsWithExistingProvider

        private void ThrowWhenProviderToRegisterOverlapsWithExistingProvider(
            InstanceProducer producerToRegister)
        {
            // A provider is a superset of the providerToRegister when it can be applied to ALL generic
            // types that the providerToRegister can be applied to as well.
            var overlappingProducers =
                from producer in this.CurrentProducers
                where producer.ImplementationType != null
                where !producer.Registration.WrapsInstanceCreationDelegate
                where !producerToRegister.Registration.WrapsInstanceCreationDelegate
                where producer.ImplementationType == producerToRegister.ImplementationType
                select producer;

            if (overlappingProducers.Any())
            {
                var overlappingProducer = overlappingProducers.FirstOrDefault();

                throw new InvalidOperationException(
                    StringResources.AnOverlappingGenericRegistrationExists(
                        producerToRegister.ServiceType,
                        overlappingProducer.ImplementationType,
                        overlappingProducer.IsConditional,
                        producerToRegister.ImplementationType,
                        producerToRegister.IsConditional));
            }
        }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:26,代码来源:NonGenericRegistrationEntry.cs


示例2: DisposableTransientComponentDiagnosticResult

 internal DisposableTransientComponentDiagnosticResult(Type serviceType, InstanceProducer registration, 
     string description)
     : base(serviceType, description, DiagnosticType.DisposableTransientComponent,
         DiagnosticSeverity.Warning, registration)
 {
     this.Registration = registration;
 }
开发者ID:MichaelSagalovich,项目名称:SimpleInjector,代码行数:7,代码来源:DisposableTransientComponentDiagnosticResult.cs


示例3: ServiceTypeDecoratorInfo

 internal ServiceTypeDecoratorInfo(Type registeredServiceType, Type implementationType,
     InstanceProducer originalProducer)
 {
     this.registeredServiceType = registeredServiceType;
     this.ImplementationType = implementationType;
     this.OriginalProducer = originalProducer;
 }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:7,代码来源:ServiceTypeDecoratorInfo.cs


示例4: GetSelfAndDependentProducers

        private static IEnumerable<InstanceProducer> GetSelfAndDependentProducers(InstanceProducer producer,
            HashSet<InstanceProducer> set = null)
        {
            set = set ?? new HashSet<InstanceProducer>(ReferenceEqualityComparer<InstanceProducer>.Instance);

            // Prevent stack overflow exception in case the graph is cyclic.
            if (set.Contains(producer))
            {
                yield break;
            }

            // Return self
            yield return set.AddReturn(producer);

            // Return dependent producers
            foreach (var relationship in producer.GetRelationships())
            {
                yield return set.AddReturn(relationship.Dependency);

                foreach (var dependentProducer in GetSelfAndDependentProducers(relationship.Dependency, set))
                {
                    yield return set.AddReturn(dependentProducer);
                }
            }
        }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:25,代码来源:Analyzer.cs


示例5: BuildDescription

        private static string BuildDescription(InstanceProducer registration, KnownRelationship[] relationships)
        {
            string componentName = BuildComponentName(registration, relationships);
            string unregisteredTypeName = BuildUnregisteredTypeDescription(relationships);

            return componentName + " depends on " + unregisteredTypeName + ".";
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:7,代码来源:ContainerRegisteredServiceAnalyzer.cs


示例6: BuildDiagnosticResult

 private static ContainerRegisteredServiceDiagnosticResult BuildDiagnosticResult(
     InstanceProducer registration, KnownRelationship[] relationships)
 {
     return new ContainerRegisteredServiceDiagnosticResult(
         serviceType: registration.ServiceType,
         description: BuildDescription(registration, relationships),
         relationships: relationships);
 }
开发者ID:MichaelSagalovich,项目名称:SimpleInjector,代码行数:8,代码来源:ContainerRegisteredServiceAnalyzer.cs


示例7: GetDebugValue

 private static DebuggerViewItem[] GetDebugValue(Type implementationType, InstanceProducer[] dependencies)
 {
     return new[]
     {
         new DebuggerViewItem("ImplementationType", implementationType.ToFriendlyName(), implementationType),
         new DebuggerViewItem("Dependencies", dependencies.Length + " dependencies.", dependencies),
     };
 }
开发者ID:MichaelSagalovich,项目名称:SimpleInjector,代码行数:8,代码来源:SingleResponsibilityViolationDiagnosticResult.cs


示例8: InitializationContext

        internal InitializationContext(InstanceProducer producer, Registration registration)
        {
            // producer will be null when a user calls Registration.BuildExpression() directly, instead of
            // calling InstanceProducer.BuildExpression() or InstanceProducer.GetInstance(). 
            Requires.IsNotNull(registration, nameof(registration));

            this.Producer = producer;
            this.Registration = registration;
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:9,代码来源:InitializationContext.cs


示例9: TornLifestyleDiagnosticResult

 internal TornLifestyleDiagnosticResult(Type serviceType, string description, Lifestyle lifestyle,
     Type implementationType, InstanceProducer[] affectedRegistrations)
     : base(serviceType, description, DiagnosticType.TornLifestyle, DiagnosticSeverity.Warning,
         CreateDebugValue(implementationType, lifestyle, affectedRegistrations))
 {
     this.Lifestyle = lifestyle;
     this.ImplementationType = implementationType;
     this.AffectedRegistrations = new ReadOnlyCollection<InstanceProducer>(affectedRegistrations.ToList());
 }
开发者ID:MichaelSagalovich,项目名称:SimpleInjector,代码行数:9,代码来源:TornLifestyleDiagnosticResult.cs


示例10: Add

        public void Add(InstanceProducer producer)
        {
            this.container.ThrowWhenContainerIsLocked();

            this.ThrowWhenOverlappingRegistrationsExist(producer);

            this.providers.RemoveAll(p => p.ServiceType == producer.ServiceType);

            this.providers.Add(new ClosedToInstanceProducerProvider(producer));
        }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:10,代码来源:GenericRegistrationEntry.cs


示例11: ShortCircuitedDependencyDiagnosticResult

 internal ShortCircuitedDependencyDiagnosticResult(Type serviceType, string description,
     InstanceProducer registration, KnownRelationship relationship,
     IEnumerable<InstanceProducer> expectedDependencies)
     : base(serviceType, description, DiagnosticType.ShortCircuitedDependency, 
         DiagnosticSeverity.Warning, 
         CreateDebugValue(registration, relationship, expectedDependencies.ToArray()))
 {
     this.Relationship = relationship;
     this.ExpectedDependencies = new ReadOnlyCollection<InstanceProducer>(expectedDependencies.ToList());
 }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:10,代码来源:ShortCircuitedDependencyDiagnosticResult.cs


示例12: AmbiguousLifestylesDiagnosticResult

 internal AmbiguousLifestylesDiagnosticResult(Type serviceType, string description, 
     Lifestyle[] lifestyles, Type implementationType, InstanceProducer diagnosedProducer, 
     InstanceProducer[] conflictingProducers)
     : base(serviceType, description, DiagnosticType.AmbiguousLifestyles, DiagnosticSeverity.Warning,
         CreateDebugValue(implementationType, lifestyles, conflictingProducers))
 {
     this.Lifestyles = new ReadOnlyCollection<Lifestyle>(lifestyles.ToList());
     this.ImplementationType = implementationType;
     this.DiagnosedRegistration = diagnosedProducer;
     this.ConflictingRegistrations = new ReadOnlyCollection<InstanceProducer>(conflictingProducers.ToList());
 }
开发者ID:bluexary,项目名称:SimpleInjector,代码行数:11,代码来源:AmbiguousLifestylesDiagnosticResult.cs


示例13: AddAppliedDecorator

        internal void AddAppliedDecorator(Type decoratorType, Container container, Lifestyle lifestyle, 
            Expression decoratedExpression, IEnumerable<KnownRelationship> decoratorRelationships = null)
        {
            var registration = new ExpressionRegistration(decoratedExpression, decoratorType,
                lifestyle, container);

            registration.ReplaceRelationships(decoratorRelationships ?? Enumerable.Empty<KnownRelationship>());

            var producer = new InstanceProducer(this.registeredServiceType, registration);

            this.appliedDecorators.Add(new DecoratorInfo(decoratorType, producer));
        }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:12,代码来源:ServiceTypeDecoratorInfo.cs


示例14: CreateDiagnosticResult

        private static TornLifestyleDiagnosticResult CreateDiagnosticResult(
            InstanceProducer diagnosedProducer,
            InstanceProducer[] affectedProducers)
        {
            Type serviceType = diagnosedProducer.ServiceType;
            Type implementationType = diagnosedProducer.Registration.ImplementationType;
            Lifestyle lifestyle = diagnosedProducer.Registration.Lifestyle;
            string description = BuildDescription(diagnosedProducer, affectedProducers);

            return new TornLifestyleDiagnosticResult(serviceType, description, lifestyle, implementationType,
                affectedProducers);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:12,代码来源:TornLifestyleContainerAnalyzer.cs


示例15: IsAnalyzable

        private static bool IsAnalyzable(InstanceProducer producer)
        {
            // We can't analyze collections, because this would lead to false positives when decorators are
            // applied to the collection. For a decorator, each collection element it decorates is a 
            // dependency, which will make it look as if the decorator has too many dependencies. Since the
            // container will delegate the creation of those elements back to the container, those elements
            // would by them selves still get analyzed, so the only thing we'd miss here is the decorator.
            if (!producer.ServiceType.Info().IsGenericType)
            {
                return true;
            }

            return producer.ServiceType.GetGenericTypeDefinition() != typeof(IEnumerable<>);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:14,代码来源:SingleResponsibilityViolationsAnalyzer.cs


示例16: Add

            public void Add(InstanceProducer producer)
            {
                this.container.ThrowWhenContainerIsLocked();
                this.ThrowWhenConditionalAndUnconditionalAreMixed(producer);

                this.ThrowWhenTypeAlreadyRegistered(producer);

                if (producer.IsUnconditional)
                {
                    this.producers.Clear();
                }

                this.producers.Add(producer);
            }
开发者ID:MichaelSagalovich,项目名称:SimpleInjector,代码行数:14,代码来源:RegistrationEntry.cs


示例17: OverriddenParameter

        internal OverriddenParameter(ParameterInfo parameter, Expression expression, InstanceProducer producer)
        {
            this.Parameter = parameter;
            this.Expression = expression;
            this.Producer = producer;

            // A placeholder is a fake expression that we inject into the NewExpression. After the 
            // NewExpression is created, it is ran through the ExpressionBuilding interception. By using
            // placeholders instead of the real overridden expressions we prevent those expressions from
            // being processed twice by the ExpressionBuilding event (since we expect the supplied expressions
            // to already be processed). After the event has ran we replace the placeholders with the real
            // expressions again (using an ExpressionVisitor).
            this.PlaceHolder = System.Linq.Expressions.Expression.Constant(null, parameter.ParameterType);
        }
开发者ID:khellang,项目名称:SimpleInjector,代码行数:14,代码来源:OverriddenParameter.cs


示例18: Add

        public void Add(InstanceProducer producer)
        {
            this.container.ThrowWhenContainerIsLocked();

            this.ThrowWhenConditionalIsRegisteredInOverridingMode(producer);
            this.ThrowWhenOverlappingRegistrationsExist(producer);

            if (this.container.Options.AllowOverridingRegistrations)
            {
                this.providers.RemoveAll(p => p.ServiceType == producer.ServiceType);
            }

            this.providers.Add(new ClosedToInstanceProducerProvider(producer));
        }
开发者ID:BrettJaner,项目名称:SimpleInjector,代码行数:14,代码来源:GenericRegistrationEntry.cs


示例19: Add

        public void Add(InstanceProducer producer)
        {
            this.container.ThrowWhenContainerIsLocked();
            this.ThrowWhenConditionalAndUnconditionalAreMixed(producer);

            this.ThrowWhenTypeAlreadyRegistered(producer);
            this.ThrowWhenProviderToRegisterOverlapsWithExistingProvider(producer);

            if (producer.IsUnconditional)
            {
                this.providers.Clear();
            }

            this.providers.Add(new SingleInstanceProducerProvider(producer));
        }
开发者ID:bcraun,项目名称:SimpleInjector,代码行数:15,代码来源:NonGenericRegistrationEntry.cs


示例20: Add

        public void Add(InstanceProducer producer)
        {
            this.container.ThrowWhenContainerIsLocked();
            this.ThrowWhenConditionalAndUnconditionalAreMixed(producer);
            this.ThrowWhenConditionalIsRegisteredInOverridingMode(producer);

            this.ThrowWhenTypeAlreadyRegistered(producer);
            this.ThrowWhenIdenticalImplementationIsAlreadyRegistered(producer);

            if (producer.IsUnconditional)
            {
                this.providers.Clear();
            }

            this.providers.Add(new SingleInstanceProducerProvider(producer));
        }
开发者ID:abatishchev,项目名称:SimpleInjector,代码行数:16,代码来源:NonGenericRegistrationEntry.cs



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# InstanceReference类代码示例发布时间:2022-05-24
下一篇:
C# InstanceHandle类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap