Does this code compile? 

public interface MyInterface
  string MyProp { get; }

Interface names should start with 'I', but this is simply good programming practice, not something required by the compiler. You don't declare interface members as public (or any other access modifier) since they're implicitly public. And yes, iterfaces can contain property declarations (they can't contain fields though).