一直以来,我认为构造函数的目的之一是在类中创建新的内部对象并设置它们的值。但是当我在Mainlight构造函数中尝试使用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);
}
答案 0 :(得分:0)
构造函数根据您的想法进行基本初始化,这是标准的。但是,由于外部控件的设计与构造函数的概要,不要将此失败联系起来。看来这个控制依赖于此时尚未调整大小的其他项目,并且可能由于高度和宽度返回 nan 值而失败,因为在初始构建期间未进行测量主页。
请参阅Silverlight Layout System以了解在初始构建期间横幅失败的原因。