Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
October 19, 2013 Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
void logMsg(string file, string msg) { //Log the message to the file. } struct Log { string logFile; LogInfo toLog; } class Foo { void bar() { /* do something */ } @Log("fooInfo.txt", LogInfo.methodCall | LogInfo.returnValue) void baz() { //Doess } } |
October 19, 2013 Re: Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
Posted in reply to TheFlyingFiddle | Sry accedentaly clicked send while writing.. |
October 19, 2013 Re: Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
Posted in reply to TheFlyingFiddle | Is it possible to inject code into a method with UDA's? For example if i wanted a method to do some logging when it's called. Something like the following. void logMsg(string file, string msg) { //Log the message to the file. } struct Log { string logFile; } class Foo { void bar() { /* do something */ } @Log("fooInfo.txt") int baz() { //Does some calculation and returns some value. } } would expand the class Foo to (at compile time) class Foo { void bar() { } //unchanged int baz() { logMsg("fooInfo.txt", "Method Foo.baz was called."); //Let baz do it's thing } } I know that this can be done by using a wrapper template that creates a subclass but it would be nice if the code could just be injected with the UDA's somehow. |
October 20, 2013 Re: Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
Posted in reply to TheFlyingFiddle | On 2013-10-20 01:16, TheFlyingFiddle wrote: > Is it possible to inject code into a method with UDA's? > For example if i wanted a method to do some logging when it's > called. It's only possible to inject code using a template or string mixin. -- /Jacob Carlborg |
October 20, 2013 Re: Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | > It's only possible to inject code using a template or string mixin.
Ah, too bad. Thanks for the answer.
|
October 20, 2013 Re: Injecting code into methods based on UDA's | ||||
---|---|---|---|---|
| ||||
Posted in reply to TheFlyingFiddle | On Sunday, 20 October 2013 at 11:58:41 UTC, TheFlyingFiddle wrote:
>> It's only possible to inject code using a template or string mixin.
>
> Ah, too bad. Thanks for the answer.
Well, it is possible to do it if you use some kind of own framework for declarative stuff and call the function only from it (thus implementing check of attached UDA's inside of the framework). Actual function modification is not possible.
|
Copyright © 1999-2021 by the D Language Foundation