1

AMF を介してカスタムの汎用型付きオブジェクトを受け取ることは可能ですか? フレックス アプリを既存の C# サービスと統合しようとしていますが、フレックスがカスタムのジェネリック型付きオブジェクトを詰まらせています。私が知る限り、Flex はジェネリックをサポートしていませんが、オブジェクトを読み込んで、必要に応じてそのメンバーをキャストできるようにしたいと考えています。私は基本的に、flex に を無視させたいだけです<T>。flex は型付きコレクションについて文句を言わないので、これを行う方法があることを願っています (List を返すサーバー呼び出しは正常に機能し、型なし List と同様に、flex はそれを ArrayCollection に変換します)。

これは、私にとって何が起こっているかの縮小された例です。

カスタム C# 型付きクラス

   public class TypeTest<T>
    {
        public T value { get; set; }

        public TypeTest ()
        {
        }
    }

typeTest を返すサーバー メソッド

    public TypeTest<String> doTypeTest()
    {
        TypeTest<String> theTester = new TypeTest<String>("grrrr");

        return theTester;
    }

対応するフレックス値オブジェクト:

[RemoteClass(alias="API.Model.TypeTest")]
    public class TypeTest
    {
        private var _value:Object;

        public function get value():Object
        {
             return _value;
        }

        public function set value(theValue:Object):void
        {
            _value = value;
        }

        public function TypeTest()
        {
        }
    }

および結果ハンドラー コード:

public function doTypeTest(result:TypeTest):void 
{
    var theString:String = result.value as String;

    trace(theString);
}

結果ハンドラーが呼び出されると、ランタイム エラーが発生します。

TypeError: エラー #1034: 型強制に失敗しました: mx.utils::ObjectProxy@11a98041 を com.model.vos.TypeTest に変換できません。

イライラすることに、結果ハンドラーをオブジェクト型のパラメーターを取るように変更すると、正常に動作します。

値オブジェクトでこれを機能させる方法を知っている人はいますか? 本当に明白な何かが欠けているように感じます。

4

2 に答える 2

0

結果ハンドラーでObjectProxyを受け取り、デバッガーを使用してその内容を確認してみてください。プロキシは、プレーンなTypeTestオブジェクトではなく、ResultEventまたは同様のコンテナクラスの場合があります。

于 2010-04-28T16:28:51.497 に答える
0

私は最近、モジュールの 1 つがオブジェクトの配列をロードしているときに他のモジュールが失敗したときに、この問題に遭遇しました。インターネットで 2 日間調査してからコードを調べたところ、失敗したモジュールが見つかりました。flex はオブジェクト クラスの登録に失敗したため、変換に失敗しました。ダミーメソッドでオブジェクトのダミー変数をインスタンス化しようとしましたが、すべてうまくいきました。

于 2010-11-22T19:36:42.490 に答える