Surprisingly (at least to me), your IL code compiles and verifies (use PEVerify for that) fine (assuming you add some .assembly
directives).
And this is backed by the CLI specification (§I.8.9.4 Interface type definition):
[…] an interface type definition shall not provide field definitions for values of the interface type (i.e., instance fields), although it can declare static fields.
[…] An interface type definition can define and implement static methods since static methods are associated with the interface type itself rather than with any value of the type.
But doing this is not CLS-compliant:
CLS Rule 19: CLS-compliant interfaces shall not define static methods, nor shall they define fields.
And you can implement the interface in C#. The following code compiles and works fine:
class Test : ITest
{
public void InstMethod(string s)
{ }
}
But it looks like you can't access the static field or the static method from C#.