如何在不同的类上使用相同的属性和方法? [复制]

Posted

技术标签:

【中文标题】如何在不同的类上使用相同的属性和方法? [复制]【英文标题】:How can I use the same properties and methods on different classes? [duplicate] 【发布时间】:2014-12-17 11:12:12 【问题描述】:

我有 3 个类,例如 ClassVersion1、ClassVersion2 和 ClassVariables。 ClassVariables 用于从 Form 中到达其他类的变量。

我认为是这些;

if(version == 1)

    ClassVersion1 clss = new ClassVersion1();

else

    ClassVersion2 clss = new ClassVersion2();

clss.vars.variable1 = 3;
clss.vars.variable2=5;
clss.DoSomething();

但我必须将函数和变量调用到 if 条件中(两个具有相同名称的对象,不同的类)。我想在条件中创建对象并在条件外使用。

我该怎么做?

【问题讨论】:

您可以使用 BASE-CLASS 或接口 欢迎来到Stack Overflow。请像在源代码中一样格式化您问题中的代码:缩进使代码更易于阅读和理解;这样你的问题就更容易回答了。 【参考方案1】:

你可以使用接口:

public interface IVersionedClass

    int Variable1  get; set; 
    string Variable2  get; set; 



public class ClassVersion1 : IVersionedClass

    public int Variable1  get; set; 
    public string Variable2  get; set; 


public class ClassVersion2 : IVersionedClass

    public int Variable1  get; set; 
    public string Variable2  get; set; 

然后像这样使用它:

IVersionedClass myClass;
if(version == 1)

    myClass = new ClassVersion1();

else

    myClass = new ClassVersion2();

【讨论】:

非常感谢@CodeCaster 我这样做了,但现在,我遇到了新问题。 1. 修饰语“public”无效。 2. 属性、索引器或动态成员访问不能作为 out 或 ref 参数传递。 ????? 这些错误不是由我发布的代码引起的。接口成员没有public修饰符,不知道你是怎么得到第二个错误的。

以上是关于如何在不同的类上使用相同的属性和方法? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Scala:尝试了扩展方法,但无法完全构造(多个类上的扩展名相同)

在可移动和不可复制的类上使用移动和交换习语是不是有意义

在具有智能指针的类上正确实现复制构造函数和等于运算符

JQuery 在不同的类上运行

java如何获取类上的注解

java如何获取类上的注解