実は、どちらも同じことを成し遂げています。組織のコントロールを開発している場合、それをinitに入れることは問題なく機能します(「技術的にはあるべき場所」であっても機能しますが、MSはそれが期待される方法を作成しました。
あなたがTelerikのようで、他の誰かが使用するコントロールを作成しているなら、私は間違いなくそれをCreateChildControls
クラスに入れます。なんで?なぜなら、それは人々が期待していることであり、MSがコントロール開発者に望んでいることだからです。この状況で気にする必要があるのは(特に、開発するコントロールが封印されていない場合)、誰かがさまざまなメソッドをオーバーライドできることです。これまで見てきたように、多くの人がinit
クラスをオーバーライドしてコードを機能させることができます。彼らが望む方法。基本メソッドの呼び出しを忘れてコードが文書化されていないために、コードが不思議に機能しない状況は常に避けたいと考えています。あなたがそれを入れるときCreateChildControls
あなたが他の開発者に言っている方法は次のとおりです:「私はおそらくここであなたが注目したいコントロールを作成することで何かをしている」。オーバーライドすると、常にそのメソッドのベースを分類しようと思います。
それを入れることについてのもう一つの素晴らしいことCreateChildControls
は、多くの人々がおそらくそれについて知らないということです(そしてそうする人々はそれが何のために使われるかを知っています)。したがって、彼らがあなたのコントロールとサルから継承しInit
、baseメソッドを呼び出すのを忘れたInit
場合でも、コードは「魔法のように」機能し、何が悪かったのかを理解するのに大騒ぎする必要はありません。