c# nullable double to actionscript NaN через шлюз фтора

Есть ли способ во фторе заставить двойное значение с нулевым значением быть переданным для сгибания как NaN? (и наоборот) По умолчанию эти значения передаются как нулевые, но число в actionscript не допускает нулевого значения, поэтому по умолчанию оно преобразуется в 0.

Мне нужно, чтобы двойные значения NULL на стороне сервера были NaN в flex, а значения NaN из flex должны быть двойными значениями NULL на стороне сервера.

Есть предположения?

Спасибо,


person Bert Vandamme    schedule 19.08.2010    source источник


Ответы (3)


Я не знаю Фтор, но я думаю, что вы могли бы пройти:

  (myDouble ?? Double.NaN)

Это выражение имеет тип double, а не double?, и оно будет NaN, если myDouble было null.

person Steven Sudit    schedule 19.08.2010
comment
Пробовал, но не получилось. Проблема заключается в сериализации в пакет AMF, который отправляется на flex, но я не нашел способа обойти это. - person Bert Vandamme; 19.08.2010
comment
То, что я знаю о Fluorine и Flex, заканчивается тем, как они пишутся, так что я не могу дать вам прямой помощи. Косвенно, возможно, вам нужно выполнить приведенный выше расчет и использовать его для заполнения обычного double, чтобы сериализатор начал с правильного ответа. - person Steven Sudit; 19.08.2010

У нас просто была такая же проблема. Наше решение состояло в том, чтобы изменить код Fluorine для записи объектов.

В файле AMFWriter, строка 1367, прямо перед вызовом WriteAMF3Data(memberValue) я добавил следующий код:

//Mapping null double?s to NaN when writing data.
if (memberValue == null)
{
    System.Reflection.PropertyInfo p = type.GetProperty(classMember.Name);
    if (p != null)
    {
        Type t = p.PropertyType; // t will be System.String
        if (t.IsEquivalentTo(typeof(Nullable<Double>)))
            memberValue = Double.NaN;
    }
}

Кажется, это работает до сих пор. Но я обычно не пишу код в .NET, поэтому может быть лучший способ сделать это.

person Jacob Eggers    schedule 26.01.2013