Могу ли я передать переменную TSender в MessagingCenter? - PullRequest
0 голосов
/ 18 октября 2019

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

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 Ответ

0 голосов
/ 21 октября 2019
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;
        });
    }
   );
 }
...