0

i tried to resolve aot warnings in my .Net maui app. I have a mapping like this:

    Microsoft.Maui.Handlers.TabbedViewHandler.Mapper.AppendToMapping("TabbedPageCenterLabels", (handler, view) => {
        var tabbedPageManager = typeof(TabbedPage).GetField("_tabbedPageManager", BindingFlags.NonPublic | BindingFlags.Instance)?.
            GetValue(handler.VirtualView);

        var navView = (BottomNavigationView?)tabbedPageManager.GetType()
            .GetProperty("BottomNavigationView", BindingFlags.NonPublic | BindingFlags.Instance)
            ?.GetValue(tabbedPageManager);
    });

The GetProperty("BottomNavigationView",..) method generate a IL2075 warning. My problem is, that the "_tabbedPageManager" field in TabbedPage is type of TabbedPageManager. TabbedPageManager is a internal class. From this internal class i need the "BottomNavigationView" private property.
How can i get the BottomNavigationView property in internal class TabbedPageManager?

Most samples i found using this: typeof(MyClass).GetProperty("..."). But can't use typeof(TabbedPageManager).GetProperty("...") because TabbedPageManager is not accessable (internal). Also

[UnsafeAccessor(UnsafeAccessorKind.Method, Name = "get_BottomNavigationView")]
extern static BottomNavigationView InstanceGetter(TabbedPageManager @this);

is not working. For the same reason.

Thank you

1

1 Answer 1

0

Depending on @Szymon Roziewski answer, this works for me:

protected override void ConnectHandler(View nativeView) {
    base.ConnectHandler(nativeView);
    nativeView.Post(() => {
        var parent = nativeView?.Parent;
        while(parent != null) {
            if(parent is ViewGroup parentGroup) {
                bottomNavigationView = FindBottomNavigationView(parentGroup);
                if(bottomNavigationView != null) {
                    //Do something
                    break;
                }
            }
            parent = parent.Parent;
        }
    });
}

The bottomNavigationView is in the parent layout and inserted by MAUI after the handler is connected.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.