使用匿名对象(MVVMCross)在WP7上将变量从ViewModel传递到ViewModel时的methodAccessException

时间:2012-04-19 11:40:55

标签: mvvm windows-phone-7.1 mvvmcross

我使用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上)中提到的那样,你必须在Assembly7的forInfo.cs中设置一个InternalsVisibleTo属性。所以我做了:

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

但这没有任何区别。我使用以下代码将两个变量从BeckhoffViewModel发送到我的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主题,但无法理解它。

1 个答案:

答案 0 :(得分:3)

编译器肯定会将匿名类创建为internal - 这就是您需要行[assembly: InternalsVisibleTo("Cirrious.MvvmCross.WindowsPhone")]

的原因

您是否可以检查AssemblyInfo.cs文件是否已链接到项目中(并且这是包含ViewModel / anonymous类代码的项目)?

如果是这种情况,您可以查看methodAccessException以查看该消息是什么吗?

如果这没有帮助,您是否可以使用像Reflector这样的工具来检查核心/应用程序集上实际存在的internalVisible属性?