EDIT: I am not necessarily asking for a property. If there's a way to make a required attribute, then that's fine too.

I can't do `abstract static` in C#, so how can I make a static property `Description` of a type and require it in sub types?

```
public abstract class TypeA
{
    public /*required*/ static String Description {get;}
}

public class TypeB : TypeA
{
    //description not implemented, compile error
}

```

Note that I am aware this can be done when it's not static, but I feel a description of the type is much more correct when it's static. E.g. `TypeB.Description` is very clear, `instance.Description` is misleading at best.

This answer [here](https://stackoverflow.com/a/11409439/1094268) suggesting to check for an attribute in constructor is the best I've come across so far, but still I'd like a restriction that's compile-time.