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

C# IGenericParameter类代码示例

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

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



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

示例1: GenericMapping

		/// <summary>
		/// Constrcuts a new GenericMapping for a specific mapping of generic parameters to type arguments.
		/// </summary>
		/// <param name="parameters">The generic parameters that should be mapped.</param>
		/// <param name="arguments">The type arguments to map generic parameters to.</param>
		protected GenericMapping(IGenericParameter[] parameters, IType[] arguments)
		{
			for (int i = 0; i < parameters.Length; i++)
			{
				_map.Add(parameters[i], arguments[i]);
			}
		}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:12,代码来源:GenericMapping.cs


示例2: GenericMapping

 /// <summary>
 /// Constrcuts a new GenericMapping for a specific mapping of generic parameters to type arguments.
 /// </summary>
 /// <param name="parameters">The generic parameters that should be mapped.</param>
 /// <param name="arguments">The type arguments to map generic parameters to.</param>
 protected GenericMapping(TypeSystemServices tss, IGenericParameter[] parameters, IType[] arguments)
 {
     _tss = tss;
     for (int i = 0; i < parameters.Length; i++)
     {
         _map.Add(parameters[i], arguments[i]);
     }
 }
开发者ID:boo,项目名称:boo-lang,代码行数:13,代码来源:GenericMapping.cs


示例3: GetInferredType

		public IType GetInferredType(IGenericParameter gp)
		{
			if (InferredTypes.ContainsKey(gp))
			{
				return InferredTypes[gp].ResultingType;
			}
			else
			{
				return null;
			}
		}
开发者ID:0xb1dd1e,项目名称:boo,代码行数:11,代码来源:TypeInferrer.cs


示例4: WriteGenericParameter

 private void WriteGenericParameter(IGenericParameter param)
 {
     switch (param.Variance)
     {
         case TypeParameterVariance.Contravariant:
             WriteKeyword("in"); break;
         case TypeParameterVariance.Covariant:
             WriteKeyword("out"); break;
     }
     WriteTypeName(param, noSpace: true);
 }
开发者ID:pgavlin,项目名称:ApiTools,代码行数:11,代码来源:CSDeclarationWriter.Generics.cs


示例5: GetConstraints

        private IEnumerable<string> GetConstraints(IGenericParameter parameter)
        {
            if (parameter.MustBeValueType)
                yield return "struct";
            else
            {
                if (parameter.MustBeReferenceType)
                    yield return "class";

                if (parameter.MustHaveDefaultConstructor)
                    yield return "new()";
            }

            foreach (var constraint in parameter.Constraints)
            {
                // Skip valuetype becaue we should get it above.
                if (TypeHelper.TypesAreEquivalent(constraint, constraint.PlatformType.SystemValueType) && parameter.MustBeValueType)
                    continue;

                yield return constraint.FullName();
            }
        }
开发者ID:dsgouda,项目名称:buildtools,代码行数:22,代码来源:CannotRemoveGenerics.cs


示例6: GetConstraints

        private IEnumerable<Action> GetConstraints(IGenericParameter parameter)
        {
            if (parameter.MustBeValueType)
                yield return () => WriteKeyword("struct", noSpace: true);
            else
            {
                if (parameter.MustBeReferenceType)
                    yield return () => WriteKeyword("class", noSpace: true);
            }

            foreach (var constraint in parameter.Constraints)
            {
                // Skip valuetype becaue we should get it below.
                if (TypeHelper.TypesAreEquivalent(constraint, constraint.PlatformType.SystemValueType) && parameter.MustBeValueType)
                    continue;

                yield return () => WriteTypeName(constraint, noSpace: true);
            }

            // new constaint cannot be put on structs and needs to be the last constraint
            if (!parameter.MustBeValueType && parameter.MustHaveDefaultConstructor)
                yield return () => { WriteKeyword("new", noSpace: true); WriteSymbol("("); WriteSymbol(")"); };
        }
开发者ID:pgavlin,项目名称:ApiTools,代码行数:23,代码来源:CSDeclarationWriter.Generics.cs


示例7: GenericArgumentMustBeValueType

 public static CompilerError GenericArgumentMustBeValueType(Node node, IGenericParameter parameter, IType argument)
 {
     return new CompilerError("BCE0147", SafeLexicalInfo(node), argument, parameter);
 }
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:CompilerErrorFactory.cs


示例8: TraverseChildren

 /// <summary>
 /// Traverses the children of the generic parameter.
 /// </summary>
 public virtual void TraverseChildren(IGenericParameter genericParameter)
 {
     Contract.Requires(genericParameter != null);
       this.TraverseChildren((INamedTypeDefinition)genericParameter);
       if (this.stopTraversal) return;
       this.Traverse(genericParameter.Constraints);
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:10,代码来源:Visitors.cs


示例9: Visit

 /// <summary>
 /// Performs some computation with the given generic parameter.
 /// </summary>
 public virtual void Visit(IGenericParameter genericParameter)
 {
     this.Visit((INamedTypeDefinition)genericParameter);
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:7,代码来源:Visitors.cs


示例10: NoteGenericParameterFlow

    private void NoteGenericParameterFlow(ITypeDefinition actual, IGenericParameter formal) {

      if (createInstanceStrategy == TypeVariableCreateInstanceStrategy.ConstructAllConcreteParameters) {
        if (!(actual is IGenericParameter)) {
          // actual is concrete

          ITypeDefinition unspecializedConcreteType = GarbageCollectHelper.UnspecializeAndResolveTypeReference(actual);

          unspecializedTypesPassedAsTypeVariables.Add(unspecializedConcreteType);

          if (GarbageCollectHelper.TypeIsConstructable(unspecializedConcreteType)) {
            // t-devinc: We should associate a reason with this construction found
            ConstructionFound(unspecializedConcreteType);
            
            IMethodDefinition defaultConstructor = TypeHelper.GetMethod(unspecializedConcreteType, wholeProgram.Host().NameTable.GetNameFor(".ctor"));

            if (!(defaultConstructor is Dummy)) {
              // t-devinc: Add reason for this
              NotePotentialNonVirtualMethodReachedForReason(defaultConstructor, null);
            }
          }      
        }
      }      
    }
开发者ID:modulexcite,项目名称:Microsoft.Cci.Metadata,代码行数:24,代码来源:RapidTypeAnalysis.cs


示例11: Visit

 /// <summary>
 /// Performs some computation with the given generic parameter.
 /// </summary>
 public void Visit(IGenericParameter genericParameter)
 {
     this.Visit((INamedTypeDefinition)genericParameter);
     Hashtable constraintTable = null;
     foreach (var constraint in genericParameter.Constraints) {
       if (constraint.TypeCode == PrimitiveTypeCode.Void)
     this.ReportError(MetadataError.ConstraintMayNotBeVoid, constraint, genericParameter);
       if (constraintTable == null) constraintTable = new Hashtable();
       var key = constraint.InternedKey;
       if (constraintTable.Find(key) == 0)
     constraintTable.Add(key, key);
       else
     this.ReportError(MetadataError.DuplicateConstraint, constraint, genericParameter);
     }
 }
开发者ID:rasiths,项目名称:visual-profiler,代码行数:18,代码来源:Validator.cs


示例12: ViolatesParameterConstraints

        /// <summary>
        /// Checks if a specified type argument violates the constraints 
        /// declared on a specified type paramter.
        /// </summary>
        public bool ViolatesParameterConstraints(IGenericParameter parameter, IType argument)
        {
            // Ensure argument is a valid type
            if (argument == null || TypeSystemServices.IsError(argument))
            {
                return false;
            }

            bool valid = true;

            // Check type semantics constraints
            if (parameter.IsClass && !argument.IsClass)
            {
                Errors.Add(CompilerErrorFactory.GenericArgumentMustBeReferenceType(ConstructionNode, parameter, argument));
                valid = false;
            }

            if (parameter.IsValueType && !argument.IsValueType)
            {
                Errors.Add(CompilerErrorFactory.GenericArgumentMustBeValueType(ConstructionNode, parameter, argument));
                valid = false;
            }

            if (parameter.MustHaveDefaultConstructor && !HasDefaultConstructor(argument))
            {
                Errors.Add(CompilerErrorFactory.GenericArgumentMustHaveDefaultConstructor(ConstructionNode, parameter, argument));
                valid = false;
            }

            // Check base type constraints
            IType[] baseTypes = parameter.GetTypeConstraints();
            if (baseTypes != null)
            {
                foreach (IType baseType in baseTypes)
                {
                    // Don't check for System.ValueType supertype constraint
                    // if parameter also has explicit value type constraint
                    if (baseType == _tss.ValueTypeType && parameter.IsValueType)
                        continue;

                    if (!baseType.IsAssignableFrom(argument))
                    {
                        Errors.Add(CompilerErrorFactory.GenericArgumentMustHaveBaseType(ConstructionNode, parameter, argument, baseType));
                        valid = false;
                    }
                }
            }

            return !valid;
        }
开发者ID:boo,项目名称:boo-lang,代码行数:54,代码来源:GenericsServices.cs


示例13: GenericArgumentMustHaveBaseType

 public static CompilerError GenericArgumentMustHaveBaseType(Node node, IGenericParameter parameter, IType argument, IType baseType)
 {
     return Instantiate("BCE0149", node, argument, baseType, parameter, parameter.DeclaringEntity);
 }
开发者ID:neonux,项目名称:boo,代码行数:4,代码来源:CompilerErrorFactory.cs


示例14: DeclareGenericParameters

 public void DeclareGenericParameters(INodeWithGenericParameters node, IGenericParameter[] parameters, int parameterIndexDelta)
 {
     for (int i=0; i < parameters.Length; ++i)
     {
         var prototype = parameters[i];
         var newParameter = CreateGenericParameterDeclaration(parameterIndexDelta + i, prototype.Name);
         node.GenericParameters.Add(newParameter);
     }
 }
开发者ID:0xb1dd1e,项目名称:boo,代码行数:9,代码来源:BooCodeBuilder.cs


示例15: RecordClosureDependency

        private void RecordClosureDependency(BlockExpression closure, IGenericParameter genericParameter)
        {
            if (!_closureDependencies.ContainsKey(closure))
            {
                _closureDependencies.Add(closure, new List<InferredType>());
            }

            _closureDependencies[closure].AddUnique(InferredTypes[genericParameter]);
        }
开发者ID:BITechnologies,项目名称:boo,代码行数:9,代码来源:GenericParameterInferrer.cs


示例16: SetDependency

 private void SetDependency(IGenericParameter dependant, IGenericParameter dependee)
 {
     InferredTypes[dependant].SetDependencyOn(InferredTypes[dependee]);
 }
开发者ID:BITechnologies,项目名称:boo,代码行数:4,代码来源:GenericParameterInferrer.cs


示例17: InitializeDependencies

        private void InitializeDependencies(IGenericParameter[] genericParameters, CallableSignature signature)
        {
            IType[] parameterTypes = GetParameterTypes(signature);

            foreach (IType parameterType in parameterTypes)
            {
                ICallableType callableParameterType = parameterType as ICallableType;
                if (callableParameterType == null) continue;
                CalculateDependencies(callableParameterType.GetSignature());
            }
        }
开发者ID:BITechnologies,项目名称:boo,代码行数:11,代码来源:GenericParameterInferrer.cs


示例18: Fix

 private bool Fix(IGenericParameter genericParameter, InferredType inferredType)
 {
     if (inferredType.Fix())
     {
         Context.TraceVerbose("Generic parameter {0} fixed to {1}.", genericParameter.Name, inferredType.ResultingType);
         return true;
     }
     return false;
 }
开发者ID:BITechnologies,项目名称:boo,代码行数:9,代码来源:GenericParameterInferrer.cs


示例19: InferGenericParameter

        protected override bool InferGenericParameter(IGenericParameter formalType, IType actualType, TypeInference inference)
        {
            // Generic parameters occuring in closures are a result of untyped input types and should be skipped
            if (_currentClosure != null && actualType == formalType) return true;

            return base.InferGenericParameter(formalType, actualType, inference);
        }
开发者ID:BITechnologies,项目名称:boo,代码行数:7,代码来源:GenericParameterInferrer.cs


示例20: GenericArgumentMustHaveBaseType

 public static CompilerError GenericArgumentMustHaveBaseType(Node node, IGenericParameter parameter, IType argument, IType baseType)
 {
     return new CompilerError("BCE0149", SafeLexicalInfo(node), argument, parameter, baseType);
 }
开发者ID:w4x,项目名称:boolangstudio,代码行数:4,代码来源:CompilerErrorFactory.cs



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
C# IGenericParameterProvider类代码示例发布时间:2022-05-24
下一篇:
C# IGenericData类代码示例发布时间: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