4

MVVMCross を使用してアプリを作成しました。IOS と Android のバージョンは動作していますが、WP7 に「移植」しようとすると、次の問題が発生しました。

throw methodAccessException.MvxWrap("Problem accessing object - most likely this is caused by an anonymous object being generated as Internal - please see http://stackoverflow.com/questions/8273399/anonymous-types-and-get-accessors-on-wp7-1");

これに関する他の質問 (Android の場合) への回答で述べたように、WP7 の AssemblyInfo.cs に InternalsVisibleTo 属性を設定する必要があります。だから私はした:

[assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")]

しかし、これは何の違いもありません。次のコードを使用して、BeckhoffViewModel から BeckhoffSensorViewModel に 2 つの変数を送信します。

ベッコフViewModel:

public IMvxCommand BeckhoffSensor1
{
get
    {
        return new MvxRelayCommand(kvpSens1);
    }
}

private void kvpSens1()
{
    RequestNavigate<BeckhoffSensorViewModel>(new { VarType = "short", Variable = ".countertest" });
}

BeckhoffSensorViewModel:

public BeckhoffSensorViewModel(string VarType, string Variable)
{
    _vartype = VarType;
    _variable = Variable;
}

私が見落としているものはありますか?例外で言及されている他のスタックオーバーフローのトピックも調べましたが、本当に理解できませんでした。

4

1 に答える 1

3

匿名クラスは、コンパイラによって最も確実に作成されinternalます-そのため、次の行が必要です[assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")]

AssemblyInfo.cs ファイルが確実にプロジェクトにリンクされていること (および、これが ViewModel/anonymous-class コードを含むプロジェクトであること) を確認できますか?

その場合、methodAccessExceptionメッセージの内容を確認していただけますでしょうか。

それでも問題が解決しない場合は、Reflector などのツールを使用して、コア/アプリケーション アセンブリに internalVisible 属性が実際に存在するかどうかを確認できますか?

于 2012-04-19T11:52:23.823 に答える