Update FishNet
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user