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

C# IGenericParameterProvider类代码示例

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

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



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

示例1: Fix

        private TypeReference Fix(TypeReference type, IGenericParameterProvider context)
        {
            if (type == null || type.IsDefinition)
                return type;

            if (type.IsGenericParameter)
            {
                var genPar = (GenericParameter)type;
                if (!fixedGenericParameters.Contains(genPar))
                {
                    fixedGenericParameters.Add(genPar);
                    FixReferences(genPar.Constraints, context);
                    FixReferences(genPar.CustomAttributes, context);
                }
                return type;
            }

            if (type is TypeSpecification)
                return Fix((TypeSpecification)type, context);
            
            var t2 = repack.GetMergedTypeFromTypeRef(type);
            if (t2 != null)
                return t2;
            
            if (type.IsNested)
                type.DeclaringType = Fix(type.DeclaringType, context);

            if (type.DeclaringType is TypeDefinition)
                return ((TypeDefinition)type.DeclaringType).NestedTypes.FirstOrDefault(x => x.FullName == type.FullName);
            
            return type;
        }
开发者ID:Fininvest,项目名称:il-repack,代码行数:32,代码来源:ReferenceFixator.cs


示例2: Push

		public void Push (IGenericParameterProvider provider)
		{
			if (stack == null)
				stack = new Collection<IGenericParameterProvider> (1) { provider };
			else
				stack.Add (provider);
		}
开发者ID:svermeulen,项目名称:cecil,代码行数:7,代码来源:Import.cs


示例3: ImportGenericParameters

        public static void ImportGenericParameters(IGenericParameterProvider imported, Type original)
        {
            var parameters = original.GetGenericTypeDefinition().GetGenericArguments();
            var imported_parameters = imported.GenericParameters;

            for (int i = 0; i < parameters.Length; i++)
                imported_parameters.Add(new GenericParameter(parameters[i].Name, imported));
        }
开发者ID:MarkusSintonen,项目名称:MNetInjector,代码行数:8,代码来源:CecilHelpers.cs


示例4: CheckProvider

		internal void CheckProvider (IGenericParameterProvider provider, int count)
		{
			if (!AllowCreation)
				return;

			for (int i = provider.GenericParameters.Count; i < count; i++)
				provider.GenericParameters.Add (new GenericParameter (provider));
		}
开发者ID:SAD1992,项目名称:justdecompile-plugins,代码行数:8,代码来源:GenericContext.cs


示例5: CopyGenericParameters

        public static void CopyGenericParameters(IGenericParameterProvider source, IGenericParameterProvider target, ReferenceResolver resolver)
        {
            if (!source.HasGenericParameters)
                return;

            foreach (var parameter in source.GenericParameters)
                target.InjectGenericParameter(parameter, resolver);
        }
开发者ID:Cadla,项目名称:OBFSCTR,代码行数:8,代码来源:MetadataBuilderHelper.cs


示例6: GetGenericParameter

 public TypeReference GetGenericParameter(GenericParameter genericParamter, IGenericParameterProvider[] paramProviders)
 {
     #if GENERIC
     IGenericParameterProvider context = GetContext(genericParamter, paramProviders);
     return context.GenericParameters[genericParamter.Position];
     #else
     return type;
     #endif
 }
开发者ID:Cadla,项目名称:OBFSCTR,代码行数:9,代码来源:ReferenceResolver.cs


示例7: GetGenericParameters

 public static Collection<GenericParameter> GetGenericParameters(
     IGenericParameterProvider self,
     ref Collection<GenericParameter> collection,
     ModuleDefinition module)
 {
     return Mixin.HasImage(module)
         ? module.Read(ref collection, self, (provider, reader) => reader.ReadGenericParameters(provider))
         : collection = new GenericParameterCollection(self);
 }
开发者ID:FreshBirdZhe,项目名称:LSharp,代码行数:9,代码来源:IGenericParameterProvider.cs


示例8: Process

	static void Process (IGenericParameterProvider provider)
	{
		if (!provider.HasGenericParameters)
			return;


		foreach (var parameter in provider.GenericParameters)
			Process (parameter);
	}
开发者ID:ALyman,项目名称:mono.linq.expressions,代码行数:9,代码来源:patch-constraints.cs


示例9: GenericParameter

        public GenericParameter(string name, IGenericParameterProvider owner)
            : base(string.Empty, name)
        {
            if (owner == null)
                throw new ArgumentNullException ();

            this.owner = owner;
            this.etype = owner.GenericParameterType == GenericParameterType.Type ? ElementType.Var : ElementType.MVar;
        }
开发者ID:n017,项目名称:Confuser,代码行数:9,代码来源:GenericParameter.cs


示例10: GenericContext

 public GenericContext(IGenericParameterProvider provider)
 {
     if (provider is TypeReference)
         m_type = provider as TypeReference;
     else if (provider is MethodReference) {
         MethodReference meth = provider as MethodReference;
         m_method = meth;
         m_type = meth.DeclaringType;
     }
 }
开发者ID:leftouterjoin,项目名称:loj-prj1,代码行数:10,代码来源:GenericContext.cs


示例11: ContainsGenericParameter

 public static bool ContainsGenericParameter(IGenericParameterProvider provider, TypeReference parameter)
 {
     foreach (var param in provider.GenericParameters)
     {
         if (param.MetadataToken == parameter.MetadataToken)
         {
             return true;
         }
     }
     return false;
 }
开发者ID:reicheltp,项目名称:website,代码行数:11,代码来源:CRefHelpers.cs


示例12: AssertGenericParametersAreIdentical

 private void AssertGenericParametersAreIdentical(IGenericParameterProvider expected, IGenericParameterProvider actual)
 {
     Assert.Equal(expected.HasGenericParameters, actual.HasGenericParameters);
     for (var i = 0; i < expected.GenericParameters.Count; i += 1)
     {
         var ap = expected.GenericParameters[i];
         var bp = actual.GenericParameters[i];
         Assert.Equal(ap.Name, bp.Name);
         Assert.Equal(ap.Position, bp.Position);
     }
 }
开发者ID:hach-que,项目名称:Dx,代码行数:11,代码来源:ProcessorUtilities.cs


示例13: Process

 public void Process(IGenericParameterProvider provider)
 {
     if (!provider.HasGenericParameters)
     {
         return;
     }
     foreach (var parameter in provider.GenericParameters
                                       .Where(x => x.HasCustomAttributes))
     {
         Process(parameter);
     }
 }
开发者ID:TylerBrinkley,项目名称:ExtraConstraints,代码行数:12,代码来源:GenericParameterProcessor.cs


示例14: GenericTypeFor

		static TypeReference GenericTypeFor (IGenericParameterProvider context)
		{
			var type = context as TypeReference;
			if (type != null)
				return type.GetElementType ();

			var method = context as MethodReference;
			if (method != null)
				return method.DeclaringType.GetElementType ();

			throw new InvalidOperationException ();
		}
开发者ID:svermeulen,项目名称:cecil,代码行数:12,代码来源:Import.cs


示例15: Fix

        internal MethodReference Fix(MethodReference method, IGenericParameterProvider context)
        {
            TypeReference declaringType = Fix(method.DeclaringType, context);
            if (method.IsGenericInstance)
            {
                return Fix((GenericInstanceMethod)method, context);
            }
            // if declaring type is in our new merged module, return the definition
            if (declaringType.IsDefinition && !method.IsDefinition)
            {
                MethodDefinition def = new ReflectionHelper(repack).FindMethodDefinitionInType((TypeDefinition)declaringType, method);
                if (def != null)
                    return def;
            }
            method.DeclaringType = declaringType;
            method.ReturnType = Fix(method.ReturnType, method);

            FixReferences(method.Parameters, method);
            FixReferences(method.GenericParameters, method);

            if (!method.IsDefinition &&
                !method.DeclaringType.IsGenericInstance &&
                !method.DeclaringType.IsArray &&
                (method.ReturnType.IsDefinition || method.Parameters.Any(x => x.ParameterType.IsDefinition)))
            {
                var culprit = method.ReturnType.IsDefinition
                                     ? method.ReturnType
                                     : method.Parameters.First(x => x.ParameterType.IsDefinition).ParameterType;
                // warn about invalid merge assembly set, as this method is not gonna work fine (peverify would warn as well)
                repack.WARN("Method reference is used with definition return type / parameter. Indicates a likely invalid set of assemblies, consider one of the following");
                repack.WARN(" - Remove the assembly defining " + culprit + " from the merge");
                repack.WARN(" - Add assembly defining " + method + " to the merge");

                // one case where it'll work correctly however (but doesn't seem common):
                // A references B
                // C references A
                // C is merged into B
            }
            return method;
        }
开发者ID:keremkusmezer,项目名称:il-repack,代码行数:40,代码来源:ReferenceFixator.cs


示例16: FixOverridenMethodDef

        /// <summary>
        /// Returns the base-most MethodDefinition (for implicitly or explicitly overridden methods) in this assembly.
        /// (Meaning overridden methods in referenced assemblies do not count, therefore it returns a Definition, not a Reference.)
        /// </summary>
        public void FixOverridenMethodDef(MethodDefinition meth, IGenericParameterProvider context)
        {
            foreach (var ov in meth.Overrides)
            {
                MethodReference fixedOv = Fix(ov, context);
                if (fixedOv.IsDefinition)
                {
                    if (fixedOv.Module == meth.Module)
                    {
                        // it's a Definition, and in our module
                        MethodDefinition fixedOvDef = (MethodDefinition)fixedOv;
                        if (fixedOvDef.IsVirtual)
                            Fix((MethodDefinition) fixedOv, meth);
                    }
                }
            }

            // no explicit overrides found, check implicit overrides
            MethodDefinition @base = MethodMatcher.MapVirtualMethod(meth);
            if (@base != null && @base.IsVirtual)
                Fix(@base, meth);
        }
开发者ID:keremkusmezer,项目名称:il-repack,代码行数:26,代码来源:ReferenceFixator.cs


示例17: Fix

        private TypeReference Fix(TypeReference type, IGenericParameterProvider context)
        {
            if (type == null || type.IsDefinition)
                return type;

            if (type.IsGenericParameter)
            {
                var genPar = (GenericParameter)type;
                if (!fixedGenericParameters.Contains(genPar))
                {
                    fixedGenericParameters.Add(genPar);
                    FixReferences(genPar.Constraints, context);
                    FixReferences(genPar.CustomAttributes, context);
                }
                return type;
            }

            if (type is TypeSpecification)
            {
                return Fix((TypeSpecification)type, context);
            }
            if (type.IsNested)
            {
                type.DeclaringType = Fix(type.DeclaringType, context);
                // might need to do more
                if (type.DeclaringType is TypeDefinition)
                {
                    return ((TypeDefinition)type.DeclaringType).NestedTypes.First(x => x.FullName == type.FullName);
                }
            }
            else
            {
                type = duplicateHandler.Rename(type);
                return FixImpl(type);
            }
            return type;
        }
开发者ID:adrianrus,项目名称:il-repack,代码行数:37,代码来源:ReferenceFixator.cs


示例18: GenericResolutionWindow

        public GenericResolutionWindow(IGenericParameterProvider generic, TypeDefinition context)
        {
            //Component initialization
            InitializeComponent();
            originalGeneric = generic;

            //Sets icon and text
            var node = new ILEditTreeNode(generic, true);
            ImgIcon.Source = (ImageSource)node.Icon;
            LblName.Text = node.Text.ToString();

            //Sets destination type
            LblDestinationType.Text = new ILEditTreeNode(context, true).Text.ToString();

            //Populates the list
            LstParameters.ItemsSource =
                generic.GenericParameters
                .Select(p => {
                    var row = new GenericParameterRowItem() { Name = p.Name, MemberFilter = Injection.MemberFilters.Types, DestinationModule = context.Module, EnclosingType = context };
                    row.HasSelectedParameter = false;
                    row.Selected += Row_Selected;
                    return row;
                }).ToArray();
        }
开发者ID:95ulisse,项目名称:ILEdit,代码行数:24,代码来源:GenericResolutionWindow.xaml.cs


示例19: GenericParameter

 public GenericParameter(string name, IGenericParameterProvider owner)
     : base(string.Empty, string.Empty)
 {
     m_name = name;
     m_owner = owner;
 }
开发者ID:KenMacD,项目名称:deconfuser,代码行数:6,代码来源:GenericParameter.cs


示例20: GetGenericParameters

 /// <summary>
 /// Format the generic parameters of given provider.
 /// </summary>
 private static string GetGenericParameters(IGenericParameterProvider provider)
 {
     if (!provider.HasGenericParameters) return string.Empty;
     return "<" + string.Join(", ", provider.GenericParameters.Select(x => x.Name)) + ">";
 }
开发者ID:Xtremrules,项目名称:dot42,代码行数:8,代码来源:CecilFormat.cs



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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