Reusable non generic method for generic methods
Posted
by
Jehof
on Stack Overflow
See other posts from Stack Overflow
or by Jehof
Published on 2012-10-12T09:20:30Z
Indexed on
2012/10/12
9:37 UTC
Read the original article
Hit count: 194
I have the following base interface
public interface IHandler{
void Handle(IMessage message);
}
and an generic interface inheriting the base interface
public interface IHandler<TMessage> : IHandler where TMessage : IMessage{
void Handle(TMessage message);
}
My classes can implement the interface IHandler<TMessage>
mutiple times. IMessage
is an base interface for messages and isn´t relevant here. Currently i´m implementing the interfaces as follows.
public class ExampleHandler : IHandler<ExampleMessage>, IHandler<OtherExampleMessag>{
void IHandler.Handle(IMessage message){
ExampleMessage example = message as ExampleMessage;
if (example != null) {
Handle(example);
}
else {
OtherExampleMessage otherExample = message as OtherExampleMessage;
if (otherExample != null) {
Handle(otherExample);
}
}
public void Handle(ExampleMessage) {
//handle message;
}
public void Handle(OtherExampleMessage) {
//handle message;
}
}
What bothers me is the way i have to implement the Handle(IMessage)
method, cause in my opinion its many redundant code, and i have to extend the method each time when i implement a new IHandler<TMessage>
interface on my class.
What i´m looking for is a more generic way to implement the Handle(IMessage)
method (maybe in a base class for Handlers), but i´m currently stuck how to do that.
© Stack Overflow or respective owner