IValueConverter
bool をオブジェクトに変換するを作成しましたSystem.Windows.Visibility
( の反対を行いますBooleanToVisibilityConverter
)。オブジェクトで使用しようとする場合を除いて、正常に動作しObservable<bool>
ます。 Observable<T>
は、T に変換する暗黙の演算子を使用して定義したクラスです。問題は、bool としてボックス化解除すると、InvalidCastException
.
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool)value) // InvalidCastException
{
return Visibility.Hidden;
}
else
{
return Visibility.Visible;
}
}
Observable
が としてボックス化されている場合、C# は暗黙の演算子を無視しているようObject
です。例えば:
Observable<bool> obs = new SimpleObservable<bool>(true);
object obj = obs;
// This conversion works just fine:
bool bval = (bool)(Observable<bool>)obj;
// This conversion throws an InvalidCastException:
bval = (bool)obj;
Observable<bool>
bool としてボックス化解除できることを保証する方法はありますか?