XAMLを使う場合の注意
注意というか当たり前なのだが、XAML上に定義したオブジェクトのコードはランタイムじゃなくても動く可能性がある、ということを何時も気にしなくてはならない。
じゃないとコンパイルエラーは一つもないはずなのにこのように原因不明のエラーに悩まされることになる。
public T GetValueOrDefault<T>(string key, T defaultValue) { object value = this.appSettings.Attribute(key).Value; if (value != null) { return (T)value; } else { return defaultValue; } }
このコードが呼ばれるのだが、this.appSettingsはデザイン時はnullなので例外が発生する。
IDEのデザイン時にコードが動くことを意識することなんてなかったもんなぁ。