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


C# IRegistration.GetInstance方法代码示例

本文整理汇总了C#中IRegistration.GetInstance方法的典型用法代码示例。如果您正苦于以下问题:C# IRegistration.GetInstance方法的具体用法?C# IRegistration.GetInstance怎么用?C# IRegistration.GetInstance使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IRegistration的用法示例。


在下文中一共展示了IRegistration.GetInstance方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CompileRegistrationIntoExpression

		protected virtual Expression CompileRegistrationIntoExpression(IRegistration registration)
		{
			if (registration == null)
				throw new ArgumentNullException("registration");
			
			// Check if it is an InstanceRegistration<>
			if (ReflectionHelper.IsInstanceOfGenericType(typeof(InstanceRegistration<>), registration) && _targetRegistration.CompileMode == CompileMode.Delegate)
			{
				var instance = registration.GetInstance();
				return ConstantExpression.Constant(instance);
			}

			// Check if it is an IExpressionRegistration
			var expReg = registration as IExpressionRegistration;
			if (expReg != null)
			{
				// Check if the lifetime can be compiled

				if (expReg.Lifetime is TransientLifetime)
				{
					// Keep visiting and try to inline the expression of the Registration found
					// Recursive call until deepest nested ExpressionRegistration with TransientLifetime is found

					// About to visit a child to the current - current becomes parent and registration/child to visit becomes current
					var parent = _currentVisitedRegistration;
					_currentVisitedRegistration = expReg;

					// Visit - visit the body and return it so it is inlined within the original Expression<Func<IResolver, object>>
					var expression = Visit(expReg.Expression.Body);

					// Returned from visiting child - change it back again
					_currentVisitedRegistration = parent;

					return expression;
				}

				if (expReg.Lifetime is ContainerLifetime && _targetRegistration.CompileMode == CompileMode.Delegate)
				{
					var instance = expReg.GetInstance();
					return ConstantExpression.Constant(instance);
				}
			}

			// Returning null will make it keep visiting
			return null;
		}
开发者ID:Kingefosa,项目名称:Dynamo.IoC,代码行数:46,代码来源:ExpressionCompilerVisitor.cs


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