using FishNet.CodeGenerating.Extension;
using MonoFN.Cecil;
namespace FishNet.CodeGenerating.Helping.Extension
{
internal static class FieldReferenceExtensions
{
///
/// Gets a Resolve favoring cached results first.
///
internal static FieldDefinition CachedResolve(this FieldReference fieldRef, CodegenSession session)
{
return session.GetClass().GetFieldReferenceResolve(fieldRef);
}
///
/// Makes a FieldReference generic if it has generic parameters.
///
public static FieldReference TryMakeGenericInstance(this FieldReference fr)
{
TypeReference declaringTr = fr.DeclaringType;
if (declaringTr.HasGenericParameters)
{
GenericInstanceType git = declaringTr.MakeGenericInstanceType();
FieldReference result = new(fr.Name, fr.FieldType, git);
return result;
}
else
{
return fr;
}
}
}
}