1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- using dnlib.DotNet;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- using System.Text.RegularExpressions;
- using System.Threading.Tasks;
- namespace HybridCLR.Editor.ABI
- {
- public class MethodDesc : IEquatable<MethodDesc>
- {
- public string Sig { get; private set; }
- public MethodDef MethodDef { get; set; }
- public ReturnInfo ReturnInfo { get; set; }
- public List<ParamInfo> ParamInfos { get; set; }
- public void Init()
- {
- for(int i = 0; i < ParamInfos.Count; i++)
- {
- ParamInfos[i].Index = i;
- }
- Sig = CreateCallSigName();
- }
- public void TransfromSigTypes(Func<TypeInfo, bool, TypeInfo> transformer)
- {
- ReturnInfo.Type = transformer(ReturnInfo.Type, true);
- foreach(var paramType in ParamInfos)
- {
- paramType.Type = transformer(paramType.Type, false);
- }
- }
- public string CreateCallSigName()
- {
- var n = new StringBuilder();
- n.Append(ReturnInfo.Type.CreateSigName());
- foreach(var param in ParamInfos)
- {
- n.Append(param.Type.CreateSigName());
- }
- return n.ToString();
- }
- public string CreateInvokeSigName()
- {
- var n = new StringBuilder();
- n.Append(ReturnInfo.Type.CreateSigName());
- foreach (var param in ParamInfos)
- {
- n.Append(param.Type.CreateSigName());
- }
- return n.ToString();
- }
- public override bool Equals(object obj)
- {
- return Equals((MethodDesc)obj);
- }
- public bool Equals(MethodDesc other)
- {
- return Sig == other.Sig;
- }
- public override int GetHashCode()
- {
- return Sig.GetHashCode();
- }
- }
- }
|