我来自脚本背景,试图破解一些C#在一起。所以我不知道如何解释这个问题,但我确定我在问这个问题,因为我不了解OOP,我毫无疑问需要!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”替换动态,我至少会获得在“OSThingy”中定义的方法和属性的Intellisense,但不知道这是否正确方式去了解它。
我确定答案是肯定的,但是在Windows XP和Windows 7 +之间分支代码路径有更好的方法吗?
谢谢你Lukazoid!这是一个非常全面的解释。我想我有几个选择要考虑! – Timothy