-1

コンストラクターの目的の 1 つは、クラス内に新しい内部オブジェクトを作成し、それらの値を設定することだとずっと考えていました。しかし、MainPage コンストラクターで Silverlight 作成コントロール (モバイル決済用のコントロール) を試したところ、サード パーティのアセンブリ内で NullReferenceException が発生しました。作成コードをボタン ハンドラーに移動すると、正常に機能しました。

質問: これは特定の Silverlight の動作ですか、それともコンストラクターの使命が正しくないことを理解していますか?

    // Constructor
    public MainPage ()
    {
        InitializeComponent ();

        //Exception
        Banner Banner = new GeneralBanner (ContentPanel);
    }

    // Banner
    public GeneralBanner (Grid contentPanel)
    {
        AdBanner = new InneractiveAd (AppId, InneractiveAd.IaAdType.IaAdType_Interstitial,
            ContentPanel, 30, Options);
    }
4

1 に答える 1

0

コンストラクターは、あなたの考えに従って基本的な初期化を行いますが、それは標準です。ただし、外部コントロールの設計によるこの失敗をコンストラクターの概要と関連付けないでください。このコントロールは、現時点ではサイズが設定されていない他のアイテムに依存しているように見えます。おそらく、メイン ページでの最初の構築時に測定されなかったため、高さと幅がnan値を返すために失敗しています。

Silverlight Layout Systemを参照して、最初の構築中にバナーが失敗する理由を詳しく理解してください。

于 2013-06-29T13:09:33.133 に答える