Я исхожу из сценариев, пытаясь взломать некоторые C# вместе. Поэтому я не был уверен, как сформулировать этот вопрос, но я уверен, что я спрашиваю об этом, потому что у меня нет понимания ООП, в котором я, без сомнения, нуждаюсь!C# код филиала на основе клиентской ОС
В принципе у меня есть три класса:
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();
Однако, поскольку я использую динамическое ключевое слово, Intellisense не работает. Есть ли способ сохранения (по крайней мере, некоторых) Intellisense, когда я позже использую один из производных классов?
Я думал, что если бы я применил интерфейс к классу «OSThingy» и заменил динамический «OSThingy», я бы хотя бы получил Intellisense для методов и свойств, определенных в «OSThingy», но не уверен, что это правильно путь к этому.
Я уверен, что ответ да, но есть ли лучший способ разветвления кодов между Windows XP и Windows 7+?
Спасибо, Луказид! Это действительно исчерпывающее объяснение. Наверное, у меня есть несколько вариантов! – Timothy