SvenC, Here's an example of where a static interface ( or possibly an interface which includes both static and non-static methods) might be useful. Suppose that we want to create a bunch of validator objects in our domain, but we don't want to incur the costs of object creation. Furthermore, aside from performing validation, there is really no need to keep the validators around - e.g. after calling Validate(), we are done with the objects. Consider an interface IBaseValidator, which is defined as such: public interface IBaseValidator { static void Validate(ref object obj); } It would be nice to be able to define such an interface, since we could then say that every validator class is guaranteed to implement a static Validate() method. The client class might look something like this: public class NameValidator : IBaseValidator { static void Validate( ref object obj ) { // cast obj to proper type, validate, throw an ApplicationException if not valid. } } The calling code may or may not ever call Validate thru the interface. If not, the interface still has some merit in that it formalizes the interface (classes must implement static Validate method). For example, maybe the NameValidator is used as such: NameValidator.Validate( ref someObject ); It may be that the only time the Validate methods are called via the interface is by using reflection. Without being able to use the keyword static in an interface definition, I know of no way in C# to require a set of classes to each implement the static Validate() method. Regards, Zac |