2

作成した参照 dll からメソッドを呼び出すと、AX 2009 内のカスタム プロジェクトでメッセージを受け取ります。メッセージは、初期化されていないコード オブジェクトの実行エラーです。プロジェクトが正常にコンパイルされ、dll が AOT で参照されています。

hostServices.Copy() を実行しようとすると、MyClassExecuteCopy.copy() でエラーが発生します。

なぜ私がこのメッセージを受け取るのかについて、誰でも問題を見ることができますか?

この例のコードを次のように短縮しました。

//classDeclaration
class MyClassExecute extends RunbaseBatch
{
    MyDll.Win.HostServices                    hostServices;
    MyDll.Data.InputParameters                inputParams;
    MyDll.Test.Data.ResultSummary           resultSummary;
}

//MyClassExecute.initLiabraries
public void initLiabraries()
{
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();

    hostServices = new MyDll.Win.HostServices();
    inputParams = new MyDll.Data.InputParameters();

    CodeAccessPermission::revertAssert();
}

////////////////////////////////////////////

class MyClassExecuteCopy extends MyClassExecute
{
}

//MyClassExecuteCopy.copy   - Exception occurs on resultSummary line with "Error executing code: copySomething     object not initialized"
void copy()
{
    new InteropPermission(InteropKind::ClrInterop).assert();

    //Exception occurs when executing line below with "Error executing code: copySomething object not initialized"
    resultSummary = hostServices.Copy();

    CodeAccessPermission::revertAssert();
}

//////////////////////////////////////////////

class CreateCopy extends Runbase
{
}

//CreateCopy.copySomething
public client server static void copySomething()
{
    MyClassExecuteCopy            myClassExecuteCopy;
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();
    myClassExecuteCopy.initLiabraries();
    myClassExecuteCopy.copy();
    CodeAccessPermission::revertAssert();
}
4

1 に答える 1

1

データによって初期化される問題が見つかりました。

その結果、hostServices.Copy() は正しい値を持たず、DLL 内でエラーが発生するか、AX 内で受信していたエラー メッセージの結果として何も返されませんでした。

同じ呼び出しが期待どおりに処理されたデータを修正した後。

于 2013-02-28T19:15:33.280 に答える