54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using MonoFN.Cecil;
 | |
| using System.Linq;
 | |
| 
 | |
| namespace FishNet.CodeGenerating.Helping.Extension
 | |
| {
 | |
| 
 | |
|     internal static class CustomAttributeExtensions
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Finds a field within an attribute.
 | |
|         /// </summary>
 | |
|         /// <typeparam name="T"></typeparam>
 | |
|         /// <param name="customAttr"></param>
 | |
|         /// <param name="field"></param>
 | |
|         /// <param name="defaultValue"></param>
 | |
|         /// <returns></returns>
 | |
|         internal static T GetField<T>(this CustomAttribute customAttr, string field, T defaultValue)
 | |
|         {
 | |
|             foreach (CustomAttributeNamedArgument customField in customAttr.Fields)
 | |
|             {
 | |
|                 if (customField.Name == field)
 | |
|                 {
 | |
|                     return (T)customField.Argument.Value;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             return defaultValue;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns if any of the attributes match IAtrribute.
 | |
|         /// </summary>
 | |
|         /// <typeparam name="TAttribute"></typeparam>
 | |
|         /// <param name="attributeProvider"></param>
 | |
|         /// <returns></returns>
 | |
|         internal static bool HasCustomAttribute<TAttribute>(this ICustomAttributeProvider attributeProvider)
 | |
|         {
 | |
|             return attributeProvider.CustomAttributes.Any(attr => attr.AttributeType.Is<TAttribute>());
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Returns if ca is of type target.
 | |
|         /// </summary>
 | |
|         /// <param name="ca"></param>
 | |
|         /// <param name="targetFullName"></param>
 | |
|         /// <returns></returns>
 | |
|         internal static bool Is(this CustomAttribute ca, string targetFullName)
 | |
|         {
 | |
|             return ca.AttributeType.FullName == targetFullName;
 | |
|         }
 | |
|     }
 | |
| 
 | |
| 
 | |
| } |