Могу ли я передать переменную 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;
});
}
);
}