Update FishNet

This commit is contained in:
2026-04-07 03:11:52 +07:00
parent 9675b7b31d
commit ba7513d478
869 changed files with 3675 additions and 2764 deletions
@@ -5,6 +5,11 @@ namespace FishNet.CodeGenerating.Helping.Extension
{
internal static class ParameterDefinitionExtensions
{
private static IGenericParameterProvider GetSafeContext(CodegenSession session, IGenericParameterProvider context)
{
return context != null && context.Module == session.Module ? context : null;
}
/// <summary>
/// Returns if parameterDef is Type.
/// </summary>
@@ -15,5 +20,34 @@ namespace FishNet.CodeGenerating.Helping.Extension
{
return parameterDef.ParameterType.FullName == type.FullName;
}
/// <summary>
/// Clones a parameter into the current session module.
/// </summary>
public static ParameterDefinition CloneImported(this ParameterDefinition parameterDef, CodegenSession session, IGenericParameterProvider context = null, string nameOverride = null)
{
IGenericParameterProvider safeContext = GetSafeContext(session, context);
TypeReference parameterTypeRef = safeContext == null ? session.ImportReference(parameterDef.ParameterType) : session.ImportReference(parameterDef.ParameterType, safeContext);
ParameterDefinition result = new(nameOverride ?? parameterDef.Name, parameterDef.Attributes, parameterTypeRef)
{
Constant = parameterDef.Constant,
IsReturnValue = parameterDef.IsReturnValue,
IsOut = parameterDef.IsOut,
IsIn = parameterDef.IsIn,
IsLcid = parameterDef.IsLcid,
IsOptional = parameterDef.IsOptional,
HasConstant = parameterDef.HasConstant,
HasDefault = parameterDef.HasDefault,
HasFieldMarshal = parameterDef.HasFieldMarshal
};
if (parameterDef.HasMarshalInfo)
result.MarshalInfo = parameterDef.MarshalInfo;
foreach (CustomAttribute item in parameterDef.CustomAttributes)
result.CustomAttributes.Add(item.CloneImported(session, safeContext));
return result;
}
}
}