Attribute

A

Andrew Robinson

I have created some custom attributes to help me map container objects to my
back end SQL server. These contain object are decorated with my attributes.
I am using the following code to read the attribute and its values but how
can I tie this back to the specific property that has the attribute. I want
to get its name and type.

Thanks,
 
M

Michael Taylor

I think your code is only looking at the attributes of the type D.

If you want the attributes of D members you need something like:

foreach ( MemberInfo memberInfo in typeof(D).GetMembers() )
{
// your code here...
}

Then you can get the property name from memberInfo.Name.

Andrew Robinson said:
Code:

MemberInfo memberInfo = typeof(D);

object[] attributes =
memberInfo.GetCustomAttributes(typeof(DataMapPropertyAttribute), false);

foreach (object attribute in attributes)

{

DataMapPropertyAttribute dmpa = (DataMapPropertyAttribute)attributes;

Console.WriteLine(dmpa.IsKeyColumn);

Console.WriteLine(dmpa.ParameterName);

Console.WriteLine(dmpa.ColumnName);

}


--

Andrew Robinson

Andrew Robinson said:
I have created some custom attributes to help me map container objects to
my back end SQL server. These contain object are decorated with my
attributes. I am using the following code to read the attribute and its
values but how can I tie this back to the specific property that has the
attribute. I want to get its name and type.

Thanks,
 
S

Steven Cheng[MSFT]

Thanks for Michael's informative input.

Hi Andrew,

As Michael has mentiond, Type.GetCustomAttributes method can only return
all the custom attributes (of a certain type) applied on that class. If
your class has other members(such as property, method field..... ) that
also apply that certain attribute, you should also loop through the class's
members (MemberInfo class) and call MemberInfo.GetCustomAttributes to query
attributes on class members.

BTW, the Type.GetMembers method by default only return all public members,
you need to supply the BindingFlags so as to let is return specific kinds
of members(such as instance members, non-public members). Here is a simple
test code snippet:


=========================
static void LoopAttributeInType(Type clsType )
{
object[] objs = null;

objs = clsType.GetCustomAttributes(typeof(TitleAttribute),
false);

foreach (TitleAttribute title in objs)
{
Console.WriteLine(title.Title);
}

foreach(MemberInfo mi in clsType.GetMembers(
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance))
{
objs = mi.GetCustomAttributes(typeof(TitleAttribute),
false);

foreach (TitleAttribute title in objs)
{
Console.WriteLine(title.Title);
}
}
}
=======================

Hope this helps some. If you have any thing unclear, please feel free to
post here.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead



==================================================

Get notification to my posts through email? Please refer to

http://msdn.microsoft.com/subscriptions/managednewsgroups/default.aspx#notif
ications.



Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial

response from the community or a Microsoft Support Engineer within 1
business day is

acceptable. Please note that each follow up response may take approximately
2 business days

as the support professional working with you may need further investigation
to reach the

most efficient resolution. The offering is not appropriate for situations
that require

urgent, real-time or phone-based interactions or complex project analysis
and dump analysis

issues. Issues of this nature are best handled working with a dedicated
Microsoft Support

Engineer by contacting Microsoft Customer Support Services (CSS) at

http://msdn.microsoft.com/subscriptions/support/default.aspx.

==================================================



This posting is provided "AS IS" with no warranties, and confers no rights.
 
S

Steven Cheng[MSFT]

Hello Andrew,

How are doing on this issue? Does our suggestion in the former reply helps
you a little? I'm still monitoring this thread and wonder whether you're
also still working on this. If there is anything else we can help, please
feel free to post here.

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top