DekGenius.com
CSHARP
attributes C# reflection variable update site:stackoverflow.com
public static Dictionary< string , string > GetAuthors ( )
{
Dictionary< string , string > _dict = new Dictionary< string , string > ( ) ;
PropertyInfo[ ] props = typeof ( Book ) . GetProperties ( ) ;
foreach ( PropertyInfo prop in props)
{
object [ ] attrs = prop. GetCustomAttributes ( true ) ;
foreach ( object attr in attrs)
{
AuthorAttribute authAttr = attr as AuthorAttribute ;
if ( authAttr != null )
{
string propName = prop. Name;
string auth = authAttr. Name;
_dict. Add ( propName, auth) ;
}
}
}
return _dict;
}
attributes C# reflection variable update site:stackoverflow.com
typeof ( Book )
. GetProperty ( "Name" )
. GetCustomAttributes ( false )
. ToDictionary ( a => a. GetType ( ) . Name, a => a) ;
attributes C# reflection variable update site:stackoverflow.com
var pInfo = typeof ( Book ) . GetProperty ( "Name" )
. GetCustomAttribute < DisplayAttribute> ( ) ;
var name = pInfo. Name;
attributes C# reflection variable update site:stackoverflow.com
using System ;
using System. Linq ;
using System. Linq. Expressions ;
using System. Reflection ;
public static class AttributeHelper
{
public static TValue GetPropertyAttributeValue < T, TOut, TAttribute, TValue> (
Expression< Func< T, TOut> > propertyExpression,
Func< TAttribute, TValue> valueSelector)
where TAttribute : Attribute
{
var expression = ( MemberExpression) propertyExpression. Body;
var propertyInfo = ( PropertyInfo) expression. Member;
var attr = propertyInfo. GetCustomAttributes ( typeof ( TAttribute ) , true ) . FirstOrDefault ( ) as TAttribute ;
return attr != null ? valueSelector ( attr) : default ( TValue ) ;
}
}
attributes C# reflection variable update site:stackoverflow.com
using System ;
using System. Linq ;
using System. Linq. Expressions ;
using System. Reflection ;
public static class AttributeHelper
{
public static TValue GetPropertyAttributeValue < T, TOut, TAttribute, TValue> (
Expression< Func< T, TOut> > propertyExpression,
Func< TAttribute, TValue> valueSelector)
where TAttribute : Attribute
{
var expression = ( MemberExpression) propertyExpression. Body;
var propertyInfo = ( PropertyInfo) expression. Member;
var attr = propertyInfo. GetCustomAttributes ( typeof ( TAttribute ) , true ) . FirstOrDefault ( ) as TAttribute ;
return attr != null ? valueSelector ( attr) : default ( TValue ) ;
}
}
var author = AttributeHelper. GetPropertyAttributeValue < Book, string , AuthorAttribute, string > ( prop => prop. Name, attr => attr. Author) ;
attributes C# reflection variable update site:stackoverflow.com
var attributeData = typeof ( Book ) . GetProperty ( "Name" ) . GetCustomAttributesData ( ) ;
var attributes = typeof ( Book ) . GetProperty ( "Name" ) . GetCustomAttributes ( false ) ;
attributes C# reflection variable update site:stackoverflow.com
using System. Collections. Generic ;
using System. ComponentModel ;
using System. Reflection ;
public static class Program
{
static void Main ( )
{
PropertyInfo prop = typeof ( Foo ) . GetProperty ( "Bar" ) ;
var vals = GetPropertyAttributes ( prop) ;
}
public static Dictionary< string , object > GetPropertyAttributes ( PropertyInfo property)
{
Dictionary< string , object > attribs = new Dictionary< string , object > ( ) ;
foreach ( CustomAttributeData attribData in property. GetCustomAttributesData ( ) )
{
if ( attribData. ConstructorArguments. Count == 1 )
{
string typeName = attribData. Constructor. DeclaringType. Name;
if ( typeName. EndsWith ( "Attribute" ) ) typeName = typeName. Substring ( 0 , typeName. Length - 9 ) ;
attribs[ typeName] = attribData. ConstructorArguments[ 0 ] . Value;
}
}
return attribs;
}
}
class Foo
{
[ DisplayName ( "abc" ) ]
[ Browsable ( false ) ]
public string Bar { get ; set ; }
}
attributes C# reflection variable update site:stackoverflow.com
using System ;
using System. Collections. Generic ;
using System. Linq ;
using System. Reflection ;
private static Dictionary< string , string > GetAttribute < TAttribute, TType> (
Func< TAttribute, string > valueFunc)
where TAttribute : Attribute
{
return typeof ( TType ) . GetProperties ( )
. SelectMany ( p => p. GetCustomAttributes ( ) )
. OfType < TAttribute> ( )
. ToDictionary ( a => a. GetType ( ) . Name. Replace ( "Attribute" , "" ) , valueFunc) ;
}
attributes C# reflection variable update site:stackoverflow.com
private static Dictionary< string , string > GetAuthors ( )
{
return typeof ( Book ) . GetProperties ( )
. SelectMany ( prop => prop. GetCustomAttributes ( ) )
. OfType < AuthorAttribute> ( )
. ToDictionary ( a => a. GetType ( ) . Name. Replace ( "Attribute" , "" ) , a => a. Name) ;
}
attributes C# reflection variable update site:stackoverflow.com
using System ;
using System. Collections. Generic ;
using System. Linq ;
using System. Reflection ;
private static Dictionary< string , string > GetAttribute < TAttribute, TType> (
Func< TAttribute, string > valueFunc)
where TAttribute : Attribute
{
return typeof ( TType ) . GetProperties ( )
. SelectMany ( p => p. GetCustomAttributes ( ) )
. OfType < TAttribute> ( )
. ToDictionary ( a => a. GetType ( ) . Name. Replace ( "Attribute" , "" ) , valueFunc) ;
}
var dictionary = GetAttribute < AuthorAttribute, Book> ( a => a. Name) ;
attributes C# reflection variable update site:stackoverflow.com
public static dynamic GetAttribute ( Type objectType, string propertyName, Type attrType)
{
var property = objectType. GetProperty ( propertyName) ;
return property. GetCustomAttributes ( ) . FirstOrDefault ( x => x. GetType ( ) == attrType) ;
}
Usage:
var objectRelAttr = GetAttribute ( typeof ( Person ) , "Country" , typeof ( ObjectRelationAttribute ) ) ;
var displayNameAttr = GetAttribute ( typeof ( Product ) , "Category" , typeof ( DisplayNameAttribute ) ) ;
© 2022 Copyright:
DekGenius.com