微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有什么方法可以找到使用 Xamarin 从 XAML 创建的 C# 代码吗?

如何解决有什么方法可以找到使用 Xamarin 从 XAML 创建的 C# 代码吗?

给定一些这样的 Xaml:

<headingView:headingView
    x:Class="Test.Views.Decks.DeckBase.DeckMgmt.DeckMgmtPage2"
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:headingView="clr-namespace:Test.Templates.Pages.headingView;assembly=Test"
    xmlns:t="clr-namespace:Test.Templates"
    BackIconVisible="True"
    PageTitle="Mgmt">
    <t:Stack>

        <t:ContentFrame heading="Reset">
            <t:LinkGrid TapCommand="{Binding ResetDeckCmd}" Text1="Reset" />
        </t:ContentFrame>

        <t:ContentFrame heading="Sort">
            <t:LinkGrid Text1="Sort" />
        </t:ContentFrame>

    </t:Stack>
</headingView:headingView>

我不需要帮助将其更改为 C#,但我想知道是否有任何地方或方法可以找到创建的中间 C#?

解决方法

查看编译器生成的实际代码很棘手(我尝试了几个小时,但找不到直接查看代码的方法)-但可以查看源代码本身。

首先 - 下载 .NET 反射器和适当的 Visual Studio 扩展。

https://visualstudio.microsoft.com/vs/preview/

enter image description here

现在我们需要找到我们想要反编译的方法。

方法 Xamarin.Forms.Xaml.Extensions.LoadFromXaml() 位于您页面的 xaml.g.cs 文件中。根据微软的说法:

当 Visual Studio 生成包含 XAML 文件的项目时,它 [方法] 解析 XAML 文件以生成包含定义的 C# 代码文件(例如 MainPage.xaml.g.cs) InitializeComponent 方法:

本例中的方法是 LoadFromXaml() 方法。

现在添加一个断点,如下所示:

enter image description here

F12 直到出现以下内容:

您将到达“加载”方法: enter image description here

您将看到如下内容:

enter image description here

从这里 - 您可以浏览 XamlLoader 类的其余源代码:

enter image description here

很有趣,不是吗?这是我得到的最接近解决方案的方法。

我只是将其作为图像共享,因为我认为将完整代码作为代码片段共享是不合适的。

这并不完全是您要找的东西 - 但我仍然希望这有助于回答您的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。