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


C# DotNet.MethodSig类代码示例

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


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

示例1: GetDelegateType

        protected static TypeDef GetDelegateType(RPContext ctx, MethodSig sig)
        {
            TypeDef ret;
            if (ctx.Delegates.TryGetValue(sig, out ret))
                return ret;

            ret = new TypeDefUser(ctx.Name.ObfuscateName(ctx.Method.DeclaringType.Namespace, RenameMode.Unicode), ctx.Name.RandomName(), ctx.Module.CorLibTypes.GetTypeRef("System", "MulticastDelegate"));
            ret.Attributes = TypeAttributes.NotPublic | TypeAttributes.Sealed;

            var ctor = new MethodDefUser(".ctor", MethodSig.CreateInstance(ctx.Module.CorLibTypes.Void, ctx.Module.CorLibTypes.Object, ctx.Module.CorLibTypes.IntPtr));
            ctor.Attributes = MethodAttributes.Assembly | MethodAttributes.HideBySig | MethodAttributes.RTSpecialName | MethodAttributes.SpecialName;
            ctor.ImplAttributes = MethodImplAttributes.Runtime;
            ret.Methods.Add(ctor);

            var invoke = new MethodDefUser("Invoke", sig.Clone());
            invoke.MethodSig.HasThis = true;
            invoke.Attributes = MethodAttributes.Assembly | MethodAttributes.HideBySig | MethodAttributes.Virtual | MethodAttributes.NewSlot;
            invoke.ImplAttributes = MethodImplAttributes.Runtime;
            ret.Methods.Add(invoke);

            ctx.Module.Types.Add(ret);

            foreach (IDnlibDef def in ret.FindDefinitions()) {
                ctx.Marker.Mark(def);
                ctx.Name.SetCanRename(def, false);
            }

            ctx.Delegates[sig] = ret;
            return ret;
        }
开发者ID:2sic4you,项目名称:ConfuserEx,代码行数:30,代码来源:RPMode.cs

示例2: Create

		public static MethodDefOptions Create(UTF8String name, MethodSig methodSig) {
			return new MethodDefOptions {
				ImplAttributes = MethodImplAttributes.IL | MethodImplAttributes.Managed,
				Attributes = MethodAttributes.Public | MethodAttributes.ReuseSlot | MethodAttributes.HideBySig | (methodSig.HasThis ? 0 : MethodAttributes.Static),
				Name = name,
				MethodSig = methodSig,
				ImplMap = null,
			};
		}
开发者ID:manojdjoshi,项目名称:dnSpy,代码行数:9,代码来源:MethodDefOptions.cs

示例3: ResolveGenericArgs

		MethodSig ResolveGenericArgs(MethodSig sig, MethodSig old) {
			sig.RetType = ResolveGenericArgs(old.RetType);
			foreach (TypeSig p in old.Params)
				sig.Params.Add(ResolveGenericArgs(p));
			sig.GenParamCount = old.GenParamCount;
			if (sig.ParamsAfterSentinel != null) {
				foreach (TypeSig p in old.ParamsAfterSentinel)
					sig.ParamsAfterSentinel.Add(ResolveGenericArgs(p));
			}
			return sig;
		}
开发者ID:EmilZhou,项目名称:ConfuserEx,代码行数:11,代码来源:GenericArgumentResolver.cs

示例4: CorPropertyInfo

		public CorPropertyInfo(CorType ownerType, uint token, uint getToken, uint setToken, string name, MethodSig getSig, MethodSig setSig, MethodAttributes getMethodAttributes, DebuggerBrowsableState? debuggerBrowsableState) {
			this.OwnerType = ownerType;
			this.Token = token;
			this.GetToken = getToken;
			this.SetToken = setToken;
			this.Name = name;
			this.GetSig = getSig;
			this.SetSig = setSig;
			this.GetMethodAttributes = getMethodAttributes;
			this.DebuggerBrowsableState = debuggerBrowsableState;
		}
开发者ID:nakijun,项目名称:dnSpy,代码行数:11,代码来源:MetaDataUtils.cs

示例5: MethodDefOptions

		public MethodDefOptions(MethodDef method) {
			this.ImplAttributes = method.ImplAttributes;
			this.Attributes = method.Attributes;
			this.Name = method.Name;
			this.MethodSig = method.MethodSig;
			this.ImplMap = method.ImplMap;
			this.CustomAttributes.AddRange(method.CustomAttributes);
			this.DeclSecurities.AddRange(method.DeclSecurities);
			this.ParamDefs.AddRange(method.ParamDefs);
			this.GenericParameters.AddRange(method.GenericParameters);
			this.Overrides.AddRange(method.Overrides);
		}
开发者ID:GreenDamTan,项目名称:dnSpy,代码行数:12,代码来源:MethodDefOptions.cs

示例6: Resolve

		/// <summary>
		///     Resolves the method signature with the specified generic arguments.
		/// </summary>
		/// <param name="methodSig">The method signature.</param>
		/// <param name="typeGenArgs">The type generic arguments.</param>
		/// <returns>Resolved method signature.</returns>
		/// <exception cref="System.ArgumentException">No generic arguments to resolve.</exception>
		public static MethodSig Resolve(MethodSig methodSig, IList<TypeSig> typeGenArgs) {
			if (typeGenArgs == null)
				throw new ArgumentException("No generic arguments to resolve.");

			var resolver = new GenericArgumentResolver();
			resolver.genericArguments = new GenericArguments();
			resolver.recursionCounter = new RecursionCounter();

			if (typeGenArgs != null)
				resolver.genericArguments.PushTypeArgs(typeGenArgs);

			return resolver.ResolveGenericArgs(methodSig);
		}
开发者ID:EmilZhou,项目名称:ConfuserEx,代码行数:20,代码来源:GenericArgumentResolver.cs

示例7: MethodDefOptions

		public MethodDefOptions(MethodDef method) {
			ImplAttributes = method.ImplAttributes;
			Attributes = method.Attributes;
			SemanticsAttributes = method.SemanticsAttributes;
			RVA = method.RVA;
			Name = method.Name;
			MethodSig = method.MethodSig;
			ImplMap = method.ImplMap;
			CustomAttributes.AddRange(method.CustomAttributes);
			DeclSecurities.AddRange(method.DeclSecurities);
			ParamDefs.AddRange(method.ParamDefs);
			GenericParameters.AddRange(method.GenericParameters);
			Overrides.AddRange(method.Overrides);
		}
开发者ID:manojdjoshi,项目名称:dnSpy,代码行数:14,代码来源:MethodDefOptions.cs

示例8: MemberRefUser

		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="module">Owner module</param>
		/// <param name="name">Name of method ref</param>
		/// <param name="sig">Method sig</param>
		/// <param name="class">Owner of method</param>
		public MemberRefUser(ModuleDef module, UTF8String name, MethodSig sig, IMemberRefParent @class) {
			this.module = module;
			this.name = name;
			[email protected] = @class;
			this.signature = sig;
		}
开发者ID:xingkongtianyu,项目名称:Protect.NET,代码行数:13,代码来源:MemberRef.cs

示例9: MethodSigFullName

		/// <summary>
		/// Returns the full name of a method sig
		/// </summary>
		/// <param name="methodSig">Method sig</param>
		/// <returns>Method sig full name</returns>
		public static string MethodSigFullName(MethodSig methodSig) {
			var fnc = new FullNameCreator(false, null);
			fnc.CreateMethodFullName(null, null, methodSig, null);
			return fnc.Result;
		}
开发者ID:KitoHo,项目名称:Reflexil,代码行数:10,代码来源:FullNameCreator.cs

示例10: StandAloneSigUser

		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="methodSig">A method sig</param>
		public StandAloneSigUser(MethodSig methodSig) {
			this.signature = methodSig;
		}
开发者ID:SAD1992,项目名称:justdecompile-plugins,代码行数:7,代码来源:StandAloneSig.cs

示例11: MatchProperty

        private static bool MatchProperty(PropertyDef mCandidate, MethodSig mCandidateSig, PropertyDef mProperty)
        {
            if (mCandidate == null || mCandidateSig == null || mProperty == null)
                return false;
            if (mCandidate.Name != mProperty.Name)
                return false;

            var accMeth = mCandidate.GetMethod ?? mCandidate.SetMethod;
            if (accMeth != null && accMeth.HasOverrides)
                return false;

            if (mProperty.PropertySig == null || mCandidateSig.GenParamCount != mProperty.PropertySig.GenParamCount)
                return false;

            return new SigComparer().Equals(mCandidateSig.Params, mProperty.PropertySig.Params);
        }
开发者ID:lovebanyi,项目名称:dnSpy,代码行数:16,代码来源:TypesHierarchyHelpers.cs

示例12: MatchMethod

        private static bool MatchMethod(MethodDef mCandidate, MethodSig mCandidateSig, MethodDef mMethod)
        {
            if (mCandidate == null || mCandidateSig == null || mMethod == null)
                return false;

            if (mCandidate.Name != mMethod.Name)
                return false;

            if (mCandidate.HasOverrides)
                return false;

            if (mCandidate.IsSpecialName != mMethod.IsSpecialName)
                return false;

            if (mCandidate.HasGenericParameters || mMethod.HasGenericParameters) {
                if (!mCandidate.HasGenericParameters || !mMethod.HasGenericParameters || mCandidate.GenericParameters.Count != mMethod.GenericParameters.Count)
                    return false;
            }

            if (mMethod.MethodSig == null || mCandidateSig.Params.Count != mMethod.MethodSig.Params.Count)
                return false;

            if (mCandidate.Parameters.Count != mMethod.Parameters.Count)
                return false;
            for (int i = 0; i < mCandidate.Parameters.Count; i++) {
                var p1 = mCandidate.Parameters[i];
                var p2 = mMethod.Parameters[i];
                if (p1.IsHiddenThisParameter != p2.IsHiddenThisParameter)
                    return false;
                if (p1.IsHiddenThisParameter)
                    continue;
                var pd1 = p1.ParamDef ?? new ParamDefUser();
                var pd2 = p2.ParamDef ?? new ParamDefUser();
                if (pd1.IsIn != pd2.IsIn || pd1.IsOut != pd2.IsOut)
                    return false;
            }

            return new SigComparer().Equals(mCandidateSig.Params, mMethod.MethodSig.Params);
        }
开发者ID:lovebanyi,项目名称:dnSpy,代码行数:39,代码来源:TypesHierarchyHelpers.cs

示例13: MethodFullName

		/// <summary>
		/// Returns the full name of a method
		/// </summary>
		/// <param name="declaringType">Declaring type full name or <c>null</c> if none</param>
		/// <param name="name">Name of method or <c>null</c> if none</param>
		/// <param name="methodSig">Method signature</param>
		/// <param name="typeGenArgs">Type generic arguments or <c>null</c> if none</param>
		/// <param name="methodGenArgs">Method generic arguments or <c>null</c> if none</param>
		/// <returns>Method full name</returns>
		public static string MethodFullName(string declaringType, string name, MethodSig methodSig, IList<TypeSig> typeGenArgs, IList<TypeSig> methodGenArgs) {
			var fnc = new FullNameCreator(false, null);
			if (typeGenArgs != null || methodGenArgs != null)
				fnc.genericArguments = new GenericArguments();
			if (typeGenArgs != null)
				fnc.genericArguments.PushTypeArgs(typeGenArgs);
			if (methodGenArgs != null)
				fnc.genericArguments.PushMethodArgs(methodGenArgs);
			fnc.CreateMethodFullName(declaringType, name, methodSig);
			return fnc.Result;
		}
开发者ID:GodLesZ,项目名称:ConfuserDeobfuscator,代码行数:20,代码来源:FullNameCreator.cs

示例14: Write

 public static void Write(this ITextOutput writer, MethodSig sig, IMethod method = null)
 {
     if (sig == null && method != null)
         sig = method.MethodSig;
     if (sig == null)
         return;
     if (sig.ExplicitThis) {
         writer.Write("instance", TextTokenType.Keyword);
         writer.WriteSpace();
         writer.Write("explicit", TextTokenType.Keyword);
         writer.WriteSpace();
     }
     else if (sig.HasThis) {
         writer.Write("instance", TextTokenType.Keyword);
         writer.WriteSpace();
     }
     sig.RetType.WriteTo(writer, ILNameSyntax.SignatureNoNamedTypeParameters);
     writer.WriteSpace();
     if (method != null) {
         if (method.DeclaringType != null) {
             method.DeclaringType.WriteTo(writer, ILNameSyntax.TypeName);
             writer.Write("::", TextTokenType.Operator);
         }
         MethodDef md = method as MethodDef;
         if (md != null && md.IsCompilerControlled) {
             writer.WriteReference(Escape(method.Name + "$PST" + method.MDToken.ToInt32().ToString("X8")), method, TextTokenHelper.GetTextTokenType(method));
         }
         else {
             writer.WriteReference(Escape(method.Name), method, TextTokenHelper.GetTextTokenType(method));
         }
     }
     MethodSpec gim = method as MethodSpec;
     if (gim != null && gim.GenericInstMethodSig != null) {
         writer.Write('<', TextTokenType.Operator);
         for (int i = 0; i < gim.GenericInstMethodSig.GenericArguments.Count; i++) {
             if (i > 0) {
                 writer.Write(',', TextTokenType.Operator);
                 writer.WriteSpace();
             }
             gim.GenericInstMethodSig.GenericArguments[i].WriteTo(writer);
         }
         writer.Write('>', TextTokenType.Operator);
     }
     writer.Write("(", TextTokenType.Operator);
     var parameters = sig.GetParameters();
     for(int i = 0; i < parameters.Count; ++i) {
         if (i > 0) {
             writer.Write(',', TextTokenType.Operator);
             writer.WriteSpace();
         }
         parameters[i].WriteTo(writer, ILNameSyntax.SignatureNoNamedTypeParameters);
     }
     writer.Write(")", TextTokenType.Operator);
 }
开发者ID:gsong2014,项目名称:dnSpy,代码行数:54,代码来源:DisassemblerHelpers.cs

示例15: Resolve

 /// <summary>
 /// Resolves the generic parameters in the specified method signature.
 /// </summary>
 /// <param name="methodSig">The method signature.</param>
 /// <returns>Resolved method signature.</returns>
 public MethodSig Resolve(MethodSig methodSig)
 {
     return ResolveGenericArgs(methodSig);
 }
开发者ID:kiootic,项目名称:MOSA-Project,代码行数:9,代码来源:GenericArgumentResolver.cs


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