1+ using System . Collections . Generic ;
2+
3+ #ifBEFORE_NET45
4+ // Copyright (c) 2010-2017 SharpDX - Alexandre Mutel
5+ //
6+ // Permission is hereby granted, free of charge, to any person obtaining a copy
7+ // of this software and associated documentation files (the "Software"), to deal
8+ // in the Software without restriction, including without limitation the rights
9+ // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10+ // copies of the Software, and to permit persons to whom the Software is
11+ // furnished to do so, subject to the following conditions:
12+ //
13+ // The above copyright notice and this permission notice shall be included in
14+ // all copies or substantial portions of the Software.
15+ //
16+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17+ // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18+ // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19+ // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20+ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21+ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22+ // THE SOFTWARE.
23+ namespace System . Reflection
24+ {
25+ internal static class SharpDXTypeExtensions
26+ {
27+ public static Type GetTypeInfo ( this Type type )
28+ {
29+ return type ;
30+ }
31+
32+ public static T GetCustomAttribute < T > ( this Type type ) where T : Attribute
33+ {
34+ var attrs = type . GetCustomAttributes ( typeof ( T ) , true ) ;
35+ if ( attrs . Length == 0 )
36+ {
37+ return null ;
38+ }
39+ return ( T ) attrs [ 0 ] ;
40+ }
41+
42+ public static T GetCustomAttribute < T > ( this MemberInfo memberInfo , bool inherited ) where T : Attribute
43+ {
44+ var attrs = memberInfo . GetCustomAttributes ( typeof ( T ) , inherited ) ;
45+ if ( attrs . Length == 0 )
46+ {
47+ return null ;
48+ }
49+ return ( T ) attrs [ 0 ] ;
50+ }
51+ public static IEnumerable < T > GetCustomAttributes < T > ( this MemberInfo memberInfo , bool inherited ) where T : Attribute
52+ {
53+ var attrs = memberInfo . GetCustomAttributes ( typeof ( T ) , inherited ) ;
54+ foreach ( var attr in attrs )
55+ {
56+ yield return ( T ) attr ;
57+ }
58+ }
59+ }
60+ }
61+ #endif