私はスクリプトのバックグラウンドから来て、いくつかの C# を一緒にハックしようとしています。したがって、この質問をどのように表現すればよいかわかりませんでしたが、間違いなく必要な OOP を理解していないため、質問していると確信しています。
基本的に私は3つのクラスを持っています:
class OSThingy
class XP : OSThingy
class Win7 : OSThingy
「OSThingy」クラスには、両方の派生クラスが必要とする共通のプロパティといくつかのメソッドが含まれています。各派生クラスは、実装が異なるいくつかの共通メソッドを提供するインターフェースを実装します。XP と Windows 7 では実装が大きく異なるので、別のクラスに分けたいと考えています。また、この設計により、不要になった XP 関連のものを簡単に削除できるようになることを願っています。
プログラムのエントリ ポイントで、Windows XP または Windows 7 で実行されているかどうかに応じて、正しいクラスのインスタンスを作成したいと考えています。
dynamic OSClass;
if (Environment.OSVersion.Version.ToString().StartsWith("5.1"))
{
OSClass = new XP();
}
else
{
OSClass = new Win7();
}
// Later on I use OSClass
OSClass.DoSomething();
ただし、dynamic キーワードを使用しているため、Intellisense は機能しません。後で派生クラスの 1 つを使用するときに、Intellisense (少なくとも一部) を保持する方法はありますか?
「OSTThingy」クラスにインターフェイスを適用し、動的を「OSTThingy」に置き換えれば、少なくとも「OSTThingy」で定義されたメソッドとプロパティの Intellisense を取得できると考えていましたが、これが正しい方法であるかどうかはわかりませんそれ。
答えはイエスだと思いますが、Windows XP と Windows 7+ の間でコード パスを分岐するより良い方法はありますか?