It doesn't make sense, anyway, as you'd have no way to access that static property without determining the type, thus breaking the whole point of having an interface anyway.
I'd just put a property on the interface, and route it to the static member.
public interface IMyInterface
{
public void Foo();
public IList<string> Properties{get;}
}
public class ConcreteClass : IMyInterface
{
public void Foo(){}
public IList<string> Properties
{
get{ return s_properties; }
}
}
But that leads me to the second question - what is it that you are trying to accomplish? Why do you need to have a static member on the class? What you really want is, given an object, to be able to determine what properties it has, right? So why would your code care if they're stored statically or per instance? It seems like you're confusing contract (what you want to be able to do) with implementation (how the provider of the service accomplishes the goal).