/Mono.Cecil/ICustomAttributeProvider.cs
http://github.com/jbevain/cecil · C# · 45 lines · 27 code · 9 blank · 9 comment · 2 complexity · 8bc87bcab76685c4ffb801b9fd3be4b7 MD5 · raw file
- //
- // Author:
- // Jb Evain (jbevain@gmail.com)
- //
- // Copyright (c) 2008 - 2015 Jb Evain
- // Copyright (c) 2008 - 2011 Novell, Inc.
- //
- // Licensed under the MIT/X11 license.
- //
- using System;
- using System.Threading;
- using Mono.Collections.Generic;
- namespace Mono.Cecil {
- public interface ICustomAttributeProvider : IMetadataTokenProvider {
- Collection<CustomAttribute> CustomAttributes { get; }
- bool HasCustomAttributes { get; }
- }
- static partial class Mixin {
- public static bool GetHasCustomAttributes (
- this ICustomAttributeProvider self,
- ModuleDefinition module)
- {
- return module.HasImage () && module.Read (self, (provider, reader) => reader.HasCustomAttributes (provider));
- }
- public static Collection<CustomAttribute> GetCustomAttributes (
- this ICustomAttributeProvider self,
- ref Collection<CustomAttribute> variable,
- ModuleDefinition module)
- {
- if (module.HasImage ())
- return module.Read (ref variable, self, (provider, reader) => reader.ReadCustomAttributes (provider));
- Interlocked.CompareExchange (ref variable, new Collection<CustomAttribute> (), null);
- return variable;
- }
- }
- }