It's a little vague to know exactly what you're looking for, but I think
dynamic proxy interceptors could work.  See the introduction here for more
information.

http://docs.castleproject.org/Tools.DynamicProxy-Introduction.ashx


---
Patrick Steele
http://weblogs.asp.net/psteele



On Fri, Dec 7, 2012 at 4:24 PM, Pingmustard <[email protected]> wrote:

> I'm not sure if DynamicProxy can solve the design dilemma I have, but
> since the framework looked promising, I thought I might ask the question..
>
> I'm designing an object hierarchy.  To keep the idea simple, say I have a
> Pet class, and a Dog sub-class (eventually, I'd have MANY sub-classes of
> Pet statically defined).  Pet provides a default virtual talk() method, but
> I'd like to somehow be able to change/swap the base talk() if necessary
> (maybe I don't like the default "Oops" string).     Here's the sample
> classes:
>
>         public class Pet
>         {
>             public  string Name { get; set; }  // interceptors will not
> capture this guy b/c it's missing virtual (aka overridable)
>             public virtual int Age { get; set; }
>             public virtual bool Deceased { get; set; }
>
>             public virtual string talk()
>             {
>                 return "Oops";
>             }
>             public override string ToString()
>             {
>                 return string.Format("Name: {0}, Age: {1}, Deceased: {2}",
> Name, Age, Deceased);
>             }
>         }
>
>         public class Dog : Pet
>         {
>             public override string talk()
>             {
>                 base.talk();
>                 return "Woof!";
>             }
>         }
>
>
> One possible solution to this dilemma is I could have the Pet.talk have a
> dedicated side routine that could be intercepted, and make it a development
> guideline to not directly call this routine ("talk_ex"):
>
> public virtual string talk()
> {
>     return talk_ex();
> }
>
>
> public virtual string talk_ex()
> {
>     return "Oops";
> }
>
> However, this isn't optimal since all base class I design would have to
> remember and manually code in this style (let alone expose the "ex"
> routines to sub-classes unnecessarily).    I'm hoping DP  might have a
> better way to solve this problem?    I'm designing this from scratch, so
> any suggestion is welcome!
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google Groups
> "Castle Project Users" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/castle-project-users/-/_aEAVrxC4nIJ.
> To post to this group, send email to [email protected]
> .
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/castle-project-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en.

Reply via email to