public bool TryGetDuplicateExport(
     string fullTypeName,
     string memberName,
     out ExportedMethod exportedMethod)
 {
     return(this._DuplicateExportMethodsbyFullName.TryGetValue(AssemblyExports.GetKey(fullTypeName, memberName), out exportedMethod));
 }
        private void CheckForExportedMethods(
            Func <ExportedMethod> createExportMethod,
            ExtractExportHandler exportFilter,
            List <ExportedMethod> exportMethods,
            MethodDefinition mi)
        {
            IExportInfo exportInfo;

            if (!exportFilter(mi, out exportInfo))
            {
                return;
            }
            ExportedMethod exportedMethod = createExportMethod();

            exportedMethod.IsStatic  = mi.IsStatic;
            exportedMethod.IsGeneric = mi.HasGenericParameters;
            StringBuilder stringBuilder = new StringBuilder(mi.Name, mi.Name.Length + 5);

            if (mi.HasGenericParameters)
            {
                stringBuilder.Append("<");
                int num = 0;
                foreach (GenericParameter genericParameter in mi.GenericParameters)
                {
                    ++num;
                    if (num > 1)
                    {
                        stringBuilder.Append(",");
                    }
                    stringBuilder.Append(genericParameter.Name);
                }
                stringBuilder.Append(">");
            }
            exportedMethod.MemberName = stringBuilder.ToString();
            exportedMethod.AssignFrom(exportInfo);
            if (string.IsNullOrEmpty(exportedMethod.ExportName))
            {
                exportedMethod.ExportName = mi.Name;
            }
            if (exportedMethod.CallingConvention == (CallingConvention)0)
            {
                exportedMethod.CallingConvention = CallingConvention.Winapi;
            }
            exportMethods.Add(exportedMethod);
        }
示例#3
0
 internal DuplicateExports(ExportedMethod usedExport)
 {
     this._UsedExport = usedExport;
 }