68 lines
2.2 KiB
C#
68 lines
2.2 KiB
C#
using HarmonyLib;
|
|
using Mono.Cecil;
|
|
using Mono.Cecil.Cil;
|
|
using Mono.Cecil.Rocks;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace KFCommonUtilityLib
|
|
{
|
|
public static class ModuleUtils
|
|
{
|
|
public static string CreateFieldName(Type moduleType)
|
|
{
|
|
return (moduleType.FullName + "_" + moduleType.Assembly.GetName().Name).ReplaceInvalidChar();
|
|
}
|
|
|
|
public static string CreateFieldName(TypeReference moduleType)
|
|
{
|
|
return (moduleType.FullName + "_" + moduleType.Module.Assembly.Name.Name).ReplaceInvalidChar();
|
|
}
|
|
|
|
public static string CreateTypeName(Type itemActionType, params Type[] moduleTypes)
|
|
{
|
|
string typeName = itemActionType.FullName + "_" + itemActionType.Assembly.GetName().Name;
|
|
foreach (Type type in moduleTypes)
|
|
{
|
|
if (type != null)
|
|
typeName += "__" + type.FullName + "_" + type.Assembly.GetName().Name;
|
|
}
|
|
typeName = typeName.ReplaceInvalidChar();
|
|
return typeName;
|
|
}
|
|
|
|
public static string CreateTypeName(TypeReference itemActionType, params TypeReference[] moduleTypes)
|
|
{
|
|
string typeName = itemActionType.FullName + "_" + itemActionType.Module.Assembly.Name.Name;
|
|
foreach (TypeReference type in moduleTypes)
|
|
{
|
|
if (type != null)
|
|
typeName += "__" + type.FullName + "_" + type.Module.Assembly.Name.Name;
|
|
}
|
|
typeName = typeName.ReplaceInvalidChar();
|
|
return typeName;
|
|
}
|
|
|
|
private static string ReplaceInvalidChar(this string self)
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
for (int i = 0; i < self.Length; i++)
|
|
{
|
|
char c = self[i];
|
|
if (!char.IsLetterOrDigit(c) && c != '_')
|
|
{
|
|
sb.Append('_');
|
|
}
|
|
else
|
|
{
|
|
sb.Append(c);
|
|
}
|
|
}
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
}
|