我有两个课程,请考虑以下内容:
public class Class1
{
public int CustomerID;
public int DriverID;
public int EmployeeID;
}
public class Class2
{
public int CustomerID;
public int DriverID;
public int EmployeeID;
}
然后我想编写一个对这些方法中的任何一个都起作用的方法,但是我的程序要到运行时才知道哪个方法。
public void DoSomething(???)
{
if (???.GetType() == typeof(Class1)
{
//do stuff related to class 1
}
if (???.GetType() == typeof(Class2)
{
//do stuff related to class 2
}
}
考虑到它们是不同的类型,如何将这些类之一传递给该方法?然后,我需要检查类型以执行单独的操作。
在我的应用程序中将使用的方式是将Class1和Class2链接到ParentClass,并在该ParentClass上指示应使用哪个链接对象(Class1和Class2),例如ParentClass上会有一个布尔值,如果bool为true,则使用Class1,否则使用Class2,并且我想将布尔值传递给该方法。我不想创建一个单独的方法,因为我认为这样做是最好的。
我不确定如何实现这一目标。
答案 0 :(得分:1)
使用具有共同属性的基类。
这些类通过方法DoSomeThing
的实现从中派生。
然后,将自动为正确的类型调用方法DoSomeThing
public abstract BaseClass
{
public int CustomerID;
public int DriverID;
public int EmployeeID;
public abstract void DoSomeThing();
}
public abstract Class1
{
public override void DoSomeThing(){}
}
public abstract Class
{
public override void DoSomeThing(){}
}
public void DoSomething(BaseClass class)
{
class.DoSomeThing();
}
答案 1 :(得分:0)
如果可以的话,我的首选是在继承上进行接口。我认为以后可以灵活一些。
public static void DoSomething(IDoSomething MyObject)
{
MyObject.DoSomeMethod();
}
interface IDoSomething
{
void DoSomeMethod();
}
public class Class1 : IDoSomething
{
public int CustomerID;
public int DriverID;
public int EmployeeID;
public void DoSomeMethod()
{
throw new NotImplementedException();
}
}
public class Class2 : IDoSomething
{
public int CustomerID;
public int DriverID;
public int EmployeeID;
public void DoSomeMethod()
{
throw new NotImplementedException();
}
}
答案 2 :(得分:-2)
您可以尝试以下方式:
public static void DoSomething(object MyObject)
{
if (MyObject.GetType() == typeof(Class1))
{
// (MyObject as Class1 )
}
if (MyObject.GetType() == typeof(Class2))
{
// (MyObject as Class2 )
}
}