Вызов метода при вызове другого метода в другом классе в C#

#c# #xamarin.forms

#c# #xamarin.forms

Вопрос:

У меня есть приложение Xamarin Forms (на самом деле привязки к мобильному блейзеру). Для каждой платформы есть проекты, и один проект является общим. MyApp (общий проект), MyApp.Android и т.д. Я могу получить доступ к общему проекту из любого другого проекта, но не наоборот.

Итак, я следовал руководству и для данной кнопки в XML в общем проекте

 <Button
  android:id="@ id/subscribeButton"
  android:layout_width="match_parent"
  android:text="Subscribe to Notifications" />
  

в Android project есть код ответа (если быть точным, в MainActivity.cs):

 var subscribeButton = FindViewById<Button>(Resource.Id.subscribeButton);
subscribeButton.Click  = delegate {
    FirebaseMessaging.Instance.SubscribeToTopic("news");
    Log.Debug(TAG, "Subscribed to remote notifications");
};
  

Итак, здесь findViewById находит кнопку в общем клиентском проекте, и когда эта кнопка нажата, она просто запускает то, что внутри.

Моя проблема в том, что в моем проекте вместо XML есть файлы razor.

На самом деле я пытаюсь выполнить следующее:

  • В файле razor в общем проекте
 @code {
    User loggedUser;
    protected override async Task OnInitializedAsync(){
    loggedUser = await.getUser();
    if(loggedUser != null)
         subscribeUser(loggedUser.groupName); //user.groupName is a string
}
  
  • и в Android Project
 protected override void OnCreate(Bundle savedInstanceState)
{
    //some code
    if( subsribeUser(string groupname) invoked ) {
        FirebaseMessaging.Instance.SubscribeToTopic(groupname);
    }
}
  

Таким образом, вместо нажатия кнопки или любого другого взаимодействия с пользователем клиент должен подписаться на loggedUser loggedUser.groupName раздел.


  • Как мне прослушивать, вызывается ли метод, и выполнять некоторые другие действия, когда это происходит?

  • Можно ли получить доступ к параметрам, с которыми вызывается этот метод?

  • Обрабатывается ли это с помощью обработчиков событий?

Я запутался, потому что это не похоже на вызов метода из другого класса, к которому у вас есть доступ.

Комментарии:

1. Я недостаточно знаю о Razor, чтобы дать ответ, но я бы предложил разбить ваш вопрос на более мелкие шаги. Во-первых: вы можете найти кнопку? Попробуйте отладить проект, если в строке ошибка subscribeButton.Click = ... , значит, ваш код не смог найти кнопку.

2. Я ошибаюсь, когда объясняю это. Я хочу добиться этого, не привязывая его к кнопке. Это должно происходить автоматически при входе пользователя в систему. В руководстве это происходит при нажатии кнопки, но мне было интересно, смогу ли я добиться того же без взаимодействия с пользователем. Я соответствующим образом отредактирую свой вопрос.

3. «Я могу получить доступ к общему проекту из любого другого проекта, но не наоборот». — вот как работают ссылки. Если A ссылается на B, A может получить доступ к общедоступным элементам B, но B не может получить доступ к элементам A.