refクラスのインスタンスをアクティブ化する方法

ディケイドムーン

私がこのクラスを持っているとしましょう:

public ref class Page1 sealed : Windows::UI::Xaml::Controls::Page {};

このクラスのインスタンスを次のようにアクティブ化できます。

auto page = ref new Page1();

しかし、生のC ++でそれをどのように行うのでしょうか?

私はこれを試しましたが、機能しません:

Microsoft::WRL::Wrappers::HString className;
className.Set(L"App1.Page1");
IInspectable *page;
Windows::Foundation::ActivateInstance(className.Get(), &page);

上記のコードは、自分の参照クラス「App1.Page1」ではなく、Windowsランタイムクラス名(「Windows.UI.Xaml.Controls.Button」など)を指定した場合に機能します。


または、名前空間で指定さPage1たパブリックrefクラスを宣言したApp1場合、このクラスのインスタンスをIInspectable*HSTRING "App1.Page1"からとしてアクティブ化するにはどうすればよいですか?

ディケイドムーン

私はそれを理解したと思います。ええと、この答えは任意の型をアクティブにする問題を直接解決するわけではありませんが、私が望むことはします。

悪魔は細部にあります。XAMLコンパイラは、ソリューションエクスプローラーに表示されない一連のファイルを生成します。これらのファイルは、拡張子を持っている.g.h.g.hppソリューションエクスプローラーの[すべてのファイルを表示]ボタンをクリックして、それらを表示できます。

ではApp.g.h、アプリケーションクラスが実装Windows::UI::Xaml::Markup::IXamlMetadataProvider我々はXAMLの種類に関する情報を取得するために使用できるクラスを、。XamlTypeInfoファイルが生成された型定義が含まれています。

XAMLタイプの1つをTypeNameからアクティブ化する方法を示すコードを次に示します

Object^ activate(TypeName typeName)
{
    auto app = Application::Current;
    auto provider = static_cast<IXamlMetadataProvider^>(app);
    auto xamlType = provider->GetXamlType(typeName);
    return xamlType->ActivateInstance();
}

XAMLコンパイラによって生成されたXAMLタイプ情報のおかげで、WRLは不要で、100%C ++ / CXです!

Application派生クラスもIXamlMetadataProviderインターフェイスを実装するという点で、同様の構造がC#プロジェクトにも当てはまると思います。内部的には、Windowsランタイムは.NETを使用しないため、「実際の」リフレクションがないため、静的に定義された型定義に依存します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

プリミティブ型のClassクラスをインスタンス化する方法は?

分類Dev

jquerydatepickerの現在アクティブなインスタンスを取得する方法

分類Dev

AndroidStudio2.0でインスタントランをアクティブ化する方法

分類Dev

非アクティビティクラスからアクティビティクラスのオブジェクトをインスタンス化する方法は?

分類Dev

BIOSライセンスでWindows7をアクティブ化する方法

分類Dev

Powershellのイベントでアクティブ化するWindowsタスクを作成する方法

分類Dev

アクティブリンクのスタイルを変更する方法

分類Dev

WordPressのブートストラップタブでアイテムとコンテンツにアクティブなクラスを追加する方法

分類Dev

MainActivityのListViewオブジェクトを使用してカスタムアクティビティクラスをインスタンス化します

分類Dev

クラス内のc ++ 11ネイティブポインタと配列を初期化する方法は?

分類Dev

CloudCarouselのフロントインデックスにアクティブクラスを追加する方法は?

分類Dev

href要素にタブインデックスを追加すると、アクティブクラスが非アクティブ化されなくなります

分類Dev

F#でクラスとそのプロパティをインスタンス化する方法

分類Dev

ストアを使用してSvelteでクラスインスタンスをリアクティブにする

分類Dev

1つのサーバーインスタンスでのみバッチをアクティブ化する

分類Dev

オンタッチリスナーを使用してレイアウトのアルファ「カラー」を非アクティブ化する方法

分類Dev

インタラクティブ レポートのレポート エイリアスを表示する方法

分類Dev

Vue.jsインデックスが0の場合にアクティブクラスを追加する方法

分類Dev

インスタンスプロパティをサブクラスswiftにのみ表示する方法

分類Dev

外部クラスのインスタンスを使用してネストされたクラスのプロパティにアクセスする方法

分類Dev

複数のテーブルのエンティティクラスにアイテムを配置する方法

分類Dev

センターliにアクティブクラスを追加する方法

分類Dev

Hibernateで非エンティティサブクラスのエンティティを永続化する方法

分類Dev

コミュニティ編集でodoo9エンタープライズをインストール/アクティブ化する方法

分類Dev

カスタムオブジェクトのarraylistをアクティビティからインスタンスでフラグメントに渡す方法

分類Dev

テンプレートクラスのテンプレートをインスタンス化する方法

分類Dev

F#インタラクティブでスパンを使用する方法は?

分類Dev

Dozerでサブクラスをインスタンス化する方法は?

分類Dev

FTP / cpanelを介してワードプレスプラグインをアクティブ化する方法は?

Related 関連記事

  1. 1

    プリミティブ型のClassクラスをインスタンス化する方法は?

  2. 2

    jquerydatepickerの現在アクティブなインスタンスを取得する方法

  3. 3

    AndroidStudio2.0でインスタントランをアクティブ化する方法

  4. 4

    非アクティビティクラスからアクティビティクラスのオブジェクトをインスタンス化する方法は?

  5. 5

    BIOSライセンスでWindows7をアクティブ化する方法

  6. 6

    Powershellのイベントでアクティブ化するWindowsタスクを作成する方法

  7. 7

    アクティブリンクのスタイルを変更する方法

  8. 8

    WordPressのブートストラップタブでアイテムとコンテンツにアクティブなクラスを追加する方法

  9. 9

    MainActivityのListViewオブジェクトを使用してカスタムアクティビティクラスをインスタンス化します

  10. 10

    クラス内のc ++ 11ネイティブポインタと配列を初期化する方法は?

  11. 11

    CloudCarouselのフロントインデックスにアクティブクラスを追加する方法は?

  12. 12

    href要素にタブインデックスを追加すると、アクティブクラスが非アクティブ化されなくなります

  13. 13

    F#でクラスとそのプロパティをインスタンス化する方法

  14. 14

    ストアを使用してSvelteでクラスインスタンスをリアクティブにする

  15. 15

    1つのサーバーインスタンスでのみバッチをアクティブ化する

  16. 16

    オンタッチリスナーを使用してレイアウトのアルファ「カラー」を非アクティブ化する方法

  17. 17

    インタラクティブ レポートのレポート エイリアスを表示する方法

  18. 18

    Vue.jsインデックスが0の場合にアクティブクラスを追加する方法

  19. 19

    インスタンスプロパティをサブクラスswiftにのみ表示する方法

  20. 20

    外部クラスのインスタンスを使用してネストされたクラスのプロパティにアクセスする方法

  21. 21

    複数のテーブルのエンティティクラスにアイテムを配置する方法

  22. 22

    センターliにアクティブクラスを追加する方法

  23. 23

    Hibernateで非エンティティサブクラスのエンティティを永続化する方法

  24. 24

    コミュニティ編集でodoo9エンタープライズをインストール/アクティブ化する方法

  25. 25

    カスタムオブジェクトのarraylistをアクティビティからインスタンスでフラグメントに渡す方法

  26. 26

    テンプレートクラスのテンプレートをインスタンス化する方法

  27. 27

    F#インタラクティブでスパンを使用する方法は?

  28. 28

    Dozerでサブクラスをインスタンス化する方法は?

  29. 29

    FTP / cpanelを介してワードプレスプラグインをアクティブ化する方法は?

ホットタグ

アーカイブ