0

IValueConverterint などの null 許容型を取るを実装しようとしていますか? 列挙型? bool を返します (値がある場合は true、そうでない場合は false)。nullable の型が事前にわかりません。

ボックス化されたvalue(タイプのobject)には a がなく.HasValue、単純な(value == null)オブジェクトが渡されたオブジェクトの null 性を反映しないか、メソッドに何かが渡されたかどうかはわかりません。valueさらに、としてキャストすることはできず、使用できるインターフェイスNullableではないようですINullable

基本的に、ボックス化されたオブジェクトの nullness を判断するためにキャストする必要がありますか?

これが私が持っているものです...

public class NullableHasValueToBool : System.Windows.Data.IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo cultureInfo)
    {
        // Unsure if this is really the nullness of the passed object
        return (value != null);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo cultureInfo)
    {
        throw new NotImplementedException();
    }
}
4

2 に答える 2

1

単純な (value == null) が渡されたオブジェクトの nullness を反映しないかどうかはわかりません

そうなる。

または何かがメソッドに渡されたかどうか

Falseに nullable をHasValue渡すことと、メソッドに値を渡さないことは、基本的に同じことです。

private static void Test()
{
    System.Diagnostics.Debug.WriteLine(IsNull(new int?())); // Displays True
}

private static bool IsNull(object obj)
{
    return obj == null;
}
于 2013-08-13T16:35:11.560 に答える
0

これは私が使用するものです。

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool param = bool.Parse(parameter.ToString());
        if (value == null)
        {
            return false;
        }
        else
        {
            return !((bool)value ^ param);
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool param = bool.Parse(parameter.ToString());
        return !((bool)value ^ param);
    }
于 2013-08-13T16:33:01.783 に答える