这是我正在尝试做的事情:

if (a==true)
{
    dbA objectInstance = new dbA();
}
else
{
    dbB objectInstance = new dbB();
}

objectInstance.Name = "New name";


我得到“名称objectInstance在当前上下文中不存在”的假设,因为def发生在条件内部。

必须有一个更好的模式来执行此操作-我是否应该从同一类继承dbA和dbB?

最佳答案

是的,dbAdbB需要一个公共的基类或接口,并且该基类或接口需要具有Name属性作为其公共合同的一部分。

然后,您可以这样做:

SomeBase objectInstance;

if (a==true)
{
    objectInstance = new dbA();
}
else
{
    objectInstance = new dbB();
}

objectInstance.Name = "New name";


话虽这么说,我认为接口是您的最佳选择,除非这些类型已经共享了基类。

关于c# - 在数据类型和调用匹配方法之间选择?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1034880/

10-12 22:28