Scalaを見てて思ったのだけど、確かにstaticって必要ないな。あと規定がpublicでprivateを明示するのはとても正しいと思う。

object Hoge : HogeBase
{
  string Name{ get; set; }

  override int Count{ get{ ... } }
}
こんな風にclassが入るところにobjectと書いたら、自動シングルトンになるべきだし、
クラス名.でシングルトンのメンバにアクセス出来るべきだ。
これがあればstaticには必要性がないだろう。
拡張メソッドは拡張メソッドクラスに書くようにしたらいい。

public class Hoge : HogeBase
{
  static Hoge instance = new Hoge();

  private Hoge(){}

  string _Name{ get; set; }

  //ここ書きようがない
  public override int _Count{ get{ ... } }

  public static string Name{ get{ return instance._Name; } set{ instance._Name = value; } }

  public static int Count{ get{ return instance._Count; } }
}

コンストラクタとメンバを自動記述する技も使いたい。

class Hoge(string Name, int Count = 0){}
    ↓
public class Hoge
{
  public string Name{ get; private set; }
  public int Count{ get; private set; }

  public Hoge(string Name, int Count = 0)
  {
    this.Name = Name;
    this.Count = Count;
  }
}

デフォルトコンストラクタがあってセッターをパブリックにしたいならこれが使えるから
セッターはデフォルトでprivateでいいと思う。

public class Hoge
{
  public string Name{ get; set; }
  public int Count{ get; set; }
}

new Hoge{ Name = "Name", Count = 0 }

 確かにScalaは勃起するほどいい言語だけども、全てを型推論でやってしまってIDEはまともに動くんだろうかという不安はある。