2012-04-19 14 views
4

MVVMCrossを使用してアプリケーションを作成しましたが、IOSとAndroidのバージョンは機能していますが、WP7に "移植"しようとしたとき、問題は次のようmethodAccessException匿名オブジェクト(MVVMCross)を使用してViewModelからWP7のViewModelに変数を渡すとき

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から2つの変数を私のBeckhoffSensorViewModelに送ります。

BeckhoffViewModel:

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; 
} 

何か?私はまた例外で言及された他のstackoverflowトピックを見ましたが、実際にそれを理解することができませんでした。

答えて

3

匿名クラスはほとんど間違いなく、コンパイラによってinternalとして作成されます - あなたはライン[assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")]

を必要とする理由であるあなたは、AssemblyInfo.csファイルは間違いなくプロジェクトにリンクされていることを確認することができます(これがあることViewModel/anonymous-classコードを含むプロジェクト)?

メッセージの内容を確認するにはmethodAccessExceptionを確認できますか?

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

+1

私は今朝完全に起きていなかったと思います。 Core(/ Library)の代わりにUIのAssemblyInfo.csファイルに属性を追加しました。そのエラーを修正した後、正常に動作します! – David

+0

私はそれを前にしています:) – Stuart

関連する問題