0

MvvmCross Messengerプラグインを使用しようとしていますが、単純に動作させています。常に "Null Reference Exception"を返します。ここでXamarin.FormsとMvvmCross Messenger PluginのNRE

は、私はそれをテストするために作成さBaseViewModelである:ここでは

namespace TestProject.Core.ViewModels 
{ 
public class BaseViewModel : MvxViewModel 
{ 

    private readonly IMvxMessenger _messenger; 

    public BaseViewModel(IMvxMessenger messenger) 
    { 
     messenger = _messenger; 
    } 

    public IMvxCommand TestMessageCommand 
    { 

     get { return new MvxCommand(DoTestMessage); } 
    } 

    private void DoTestMessage() 
    { 
     var message = new TestMessage(this, "Potato"); 
     _messenger.Publish(message); 
    } 

    } 
} 

は、メッセージを受け取るべき他のViewModelです:

namespace TestProject.Core.ViewModels 
{ 
public class HomeViewModel : MvxViewModel 
{ 
    private string _testMessage = string.Empty; 
    private readonly MvxSubscriptionToken _token; 

    public HomeViewModel(IMvxMessenger messenger) 
    { 
     _token = messenger.Subscribe<TestMessage>(OnTestMessage); 
    } 

    private void OnTestMessage(OnTestMessage testMessage) 
    { 

     _testMessage = testMessage.Result; 
    } 

    public ICommand ShowBasePageCommand 
    { 
     get { return new MvxCommand(() => ShowViewModel<BaseViewModel>()); } 
    } 

    } 
} 

そして最後に、ここでのメッセージです:

は、
namespace TestProject.Core.Messages 
{ 
public class TestMessage 
    : MvxMessage 
{ 
    public QRCodeResultMessage(object sender, string result) : base(sender) 
    { 
     Result = result; 
    } 
    public string Result { get; private set; } 
} 
} 

ホームページのボタンを「ShowBasePageCommand」にバインドし、BasePageにはanothがあります「TestMessageCommand」にバインドされたボタンをクリックします。

全例外:

System.NullReferenceException: Object reference not set to an nstance of an object. 
at TestProject.Core.ViewModels.BaseViewModel.DoTestMessage() [0x00014] in /Users/diegopatrocinio/Projects/Xamarin/TestProject/TestProject.Core/ViewModels/BaseViewModel.cs:49 
at MvvmCross.Core.ViewModels.MvxCommand.Execute (System.Object parameter) [0x00009] in <69bce0378e8e413982d3b552d7e387a8>:0 
at Xamarin.Forms.Button.Xamarin.Forms.IButtonController.SendClicked() [0x0000a] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Core\Button.cs:121 
at Xamarin.Forms.Platform.Android.ButtonRenderer+ButtonClickListener.OnClick (Android.Views.View v) [0x0000f] in C:\BuildAgent3\work\ca3766cfc22354a1\Xamarin.Forms.Platform.Android\Renderers\ButtonRenderer.cs:303 
at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_v) [0x00011] in /Users/builder/data/lanes/4009/3a62f1ea/source/monodroid/src/Mono.Android/platforms/android-25/src/generated/Android.Views.View.cs:1857 
at at (wrapper dynamic-method) System.Object:1b16fb3a-f768-4a9f-8e2e-60f0085ed7fb (intptr,intptr,intptr) 

スタック:

System.Diagnostics.Debugger.Mono_UnhandledException_internal() in 
System.Diagnostics.Debugger.Mono_UnhandledException(System.NullReferenceException ex) in /Users/builder/data/lanes/4009/3a62f1ea/source/mono/mcs/class/corlib/System.Diagnostics/Debugger.cs:122 
object.1b16fb3a-f768-4a9f-8e2e-60f0085ed7fb(arg0, arg1, arg2) in 
TestProject.Core.ViewModels.BaseViewModel.DoTestMessage() in /Users/diegopatrocinio/Projects/Xamarin/TestProject/TestProject.Core/ViewModels/BaseViewModel.cs:49 
+0

完全な例外とスタックトレースは何ですか? – therealjohn

+0

@therealjohn質問に追加されました! –

+0

[NullReferenceExceptionとは何か、それを修正するにはどうすればいいですか?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) ) – Will

答えて

2

は、あなたのコンストラクタは、パラメータおよびクラスメンバーを反転していることに注意してください:

public BaseViewModel(IMvxMessenger messenger) 
{ 
    messenger = _messenger; 
} 

はする必要があります

public BaseViewModel(IMvxMessenger messenger) 
{ 
    _messenger = messenger; 
} 
+0

これは本当に..私はあまりにも長い間コーディングしてきたと思うし、その細部に注意を払わなかったと思う、私はこのLOLしかし、すべてをチェックした..今私はReSharperがさらに恋しく、彼らはVisual Studio Macで。ありがとう! –

+0

あなたがR#の感覚を望むなら、いつでもRiderを使うことができます – Cheesebaron

+0

@Cheesebaronライダーの問題は、XAMLを編集するためのライブプレビューの欠如であり、それは私を大いに助け、完璧になるか、ReSharperをリリースするだけですVisualStudioのための.. –

関連する問題