C#のGenerics

C#ではC++でいうところのテンプレートの特殊化ができないらしい。
だから、テンプレートの型によって処理を変えるということもできない??
でも引数のインスタンスの型を調べれば処理は分けられるみたい。

  public ConfigItem<T> createTextBox<T>(string label, T defalutValue) {
    TextBox text = new TextBox();

    ConfigItemBase item;
    if (defaultValue is int) {
      ConfigItem<int> obj = new ConfigItem<int>();
      obj.getEvent += new ConfigItem<int>.GetEventHandler(delegate { return int.Parse(text.Text); });
      item = obj;
    } else if (defaultValue is string) {
      ConfigItem<string> obj = new ConfigItem<string>();
      obj.getEvent += new ConfigItem<string>.GetEventHandler(delegate { return text.Text; });
      item = obj;
    } else {
      throw new Exception("unsupported type!");
    }
    return ConfigItem<T> item;
  }