Say I have an interface IFoo and I want all subclasses of IFoo to override Object\'s ToString method. Is this possible?
Simpl
I know this doesn't answer your question, but since there is no way to do what you're asking for, I thought I'd share my own approach for others to see.
I use a hybrid of Mark and Andrew's proposed solutions.
In my application, all domain-entities derive from an abstract base-class:
public abstract class Entity
{
///
/// Returns a that represents this instance.
///
public override string ToString()
{
return this is IHasDescription
? ((IHasDescription) this).EntityDescription
: base.ToString();
}
}
The interface itself only defines a simple accessor:
public interface IHasDescription : IEntity
{
///
/// Creates a description (in english) of the Entity.
///
string EntityDescription { get; }
}
So now there's a fall-back mechanism built in - or in other words, an Entity that implements IHasDescription must provide the EntityDescription, but any Entity can still convert to a string.
I know this isn't radically different from the other solutions proposed here, but I like the idea of minimizing the responsibility of the base Entity type, so that implementing the description-interface remains optional, but you're forced to actually implement the description-method if you're implementing the interface.
IMHO, interfaces that are implemented by the object base-class should not "count" as implemented - it would be nice to have a compiler option for that, but, oh well...