Attribute to inject code for a property?

  • Thread starter Thread starter Julia
  • Start date Start date
J

Julia

Hi,

Is there any why I could use attribute or something else
to instruct the compiler to inject a specific code for a property?

for example i have the following property and i would like that 3 lines of
code will be running
for the set function,note that i am not taking about code generation!

public virtual System.String TelephoneNumber
{
get
{
return m_TelephoneNumber;
}
set
{
//Line1
//Line2
//Line3+ m_TelephoneNumber
}
}

thanks in advance.
 
what do you mean by injecting a specific code for a property? Can you be
more specific about your three lines?
 
Julia said:
Hi,

Is there any why I could use attribute or something else
to instruct the compiler to inject a specific code for a property?

There is no code generator support directly within the MS C# compiler. There
is a third party compiler that does something like this, but I can't
remember the name(or even if it works this way. It might simply have
parameter constraints). And, although I can't say for sure, this sounds like
AOP to me. You may be able to find an AOP framework for C# or perhaps go
totally overboard and use ContextBoundObject and write your own
hooks(http://msdn.microsoft.com/msdnmag/issues/03/03/ContextsinNET/default.aspx).
It is obnoxious, but it does work(in the 1.1 framework anyway, I can't say
firsthand about 2.0).

Most of the time you would use code generators(wonderful things, even better
with partial classes) or macros to achieve this. Even a pre-build step that
parses the code, sees the attribute, and injects it would be sufficent in
most cases.

The question really is why you aren't talking about code generation but you
are. I mean, injecting code is *still* generation, even if the generation
step happens to occur during compilation time. Is there some particular
reason you can't use some form of code generation?
 
I am talking about something like COM+ attribute
AutoComplete for example

Does'nt this attribute execute code before and after a method?

ha....i can see that the article talk about something similar so i am going
to read it now.


thanks.
 
Julia said:
I am talking about something like COM+ attribute
AutoComplete for example

Does'nt this attribute execute code before and after a method?

ha....i can see that the article talk about something similar so i am
going
to read it now.

Yes, it looks like you are basically after the same concept.
AutoCompleteAttribute probably plugs into the COM+ architecture allowing
code to execute between calls. ContextBoundObject works in a similar
fashion. It isn't as straight forward(you may have to write a reflection
engine within a class level attribute that searches for your attribute on
the properties), but it should work.

This is definatly AOP, you should read about it sometime, ;).

It has its advantages, just not as many as some make it out to be.
 
Back
Top