私は、.NETフレームワークの作成者がSystem.Drawing.Image
クラスを設計したときの設計上の決定を理解しようとしています。それは抽象的ですが、重いリフティングの多くはImage
クラスで直接行われます。また、Image
オブジェクトを直接作成する2つのメソッド、Image.FromFile
およびImage.FromStream
を定義します。System.Drawing.Imageクラスが抽象クラスとして定義され、型として返されるメソッドも定義されているのはなぜですか?
抽象クラスの目的は、子クラスだけが継承すべき機能を定義する方法を助長することだと思いました。抽象クラスが、抽象クラスのインスタンスを返すメソッドを実際に定義するのは不思議なことです。
なぜこのように実装されましたか?
@eulerfx:しかし、イメージクラスはサブクラスを返さないが、実際にはそれ自身のインスタンスを返す。 。 。 – richard
このメソッドのシグネチャは、Imageが返されるように指定しますが、返される実際のオブジェクトインスタンスはImageのサブクラスになります。これを確認するには、デバッグセッションを開始し、イメージインスタンスが返された後にブレークポイントを設定し、変数を調べて実際のタイプを確認します。 – eulerfx
@eererfx:それはどういうことか分かりません。戻り値 'Type'は' Image'であり、返すべきサブクラスを知らせるためのパラメータや何もありません。私は本当に 'Image'のサブクラスではなく、' Image''型を返すと思います。ここをクリックしてください:http://msdn.microsoft.com/en-us/library/stf701f5(v=VS.80).aspx – richard