传递3种不同数据类型的方法可以做同样的事情吗?

Chr*_*zio 1 c# oop data-structures

我认为标题可能是错的..哈哈不确定..反正..

我有3种不同的数据类型..

public class data1
{
    public Color color;
    public int len;
    public DrawingVisual dv;
    Other vars...
}
public class data2
{
    public Color color;
    public int len;
    public DrawingVisual dv;
    Other vars different from data1 vars...
}
Run Code Online (Sandbox Code Playgroud)

等等...

如何创建一个函数来传递这些函数,然后在函数内部获取我需要的变量..示例..

void Something(var data)
{
    switch (typeof(data))
    {
         case data1:

         break;
         case data1:

         break;
    }
}
Run Code Online (Sandbox Code Playgroud)

这显然不会工作..但它只是一个例子..

我怎么能这样做呢?

谢谢

Ser*_*kiy 7

考虑创建类层次结构,并将方法Something移动到该层次结构.基类:

public abstract class Data
{
    public Color color;
    public int len;
    public DrawingVisual dv;

    public abstract void Something();
}
Run Code Online (Sandbox Code Playgroud)

两个派生类Data1Data2:

public class Data1 : Data
{
    // Other vars...

    public override void Something()
    {
        // Use base class data and other vars
    }
}

public class Data2 : Data
{
    // Other vars different from Data1 vars

    public override void Something()
    {
        // different implementation
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当您拥有这些类的实例时,您只需在每个项目上调用Something而不尝试确定其类型.每个项目都将包含完成操作所需的所有变量:

List<Data> items = // get list of Data1 and Data2
foreach(Data data in items)
    data.DoSomething();
Run Code Online (Sandbox Code Playgroud)