Могу ли я передать переменную TSender в MessagingCenter?

Я пытаюсь сделать это на следующих примерах:

public void Method1(object someClassAsTSender, object parameter)
{
    //i think parametertype = parameter...
    MessagingCenter.Subscribe<someClassAsTSender, parametertype> (this, "messageKey", (message, args) =>
    {
        Device.BeginInvokeOnMainThread(async () =>
        {
            //await do;
        });
    }
    );
}

или

public void Method2(object someClassAsTSender, object parameter)
{
        //i think parametertype = parameter...
        MessagingCenter.Subscribe<someClassAsTSender, parametertype> (this, "messageKey", (message, args) =>
        {
            //do;
        }
    );
}

Я пытался использовать GetType().Name, typeof(), но понятия не имею, как решить эту проблему. Это просто сомнение, потому что для MVVM я считаю более интересным использование Framework.

Если использовать MessagingCenter таким образом неправильно, объясните, пожалуйста.

1 ответ

public static void Subscribe<TSender,TArgs> (object subscriber, string message, Action<TSender,TArgs> callback, TSender source = null) where TSender : class;

TArgs это тип объектов, которые используются в качестве аргументов сообщения для сообщения, но вы не можете использовать typeof или GetType чтобы установить его. вы можете установить его на object нравиться:

public void Method1(object someClassAsTSender, object parameter)
 {
   //i think parametertype = parameter...
   MessagingCenter.Subscribe<someClassAsTSender, object> (this, "messageKey", (message, args) =>
    {
       //convert the type (e.g  string data = args as string)
       Device.BeginInvokeOnMainThread(async () =>
        {
          //await do;
        });
    }
   );
 }
Другие вопросы по тегам