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.