【问题标题】:How to pass any class object as a parameter to method [duplicate]如何将任何类对象作为参数传递给方法[重复]
【发布时间】:2017-08-22 18:22:42
【问题描述】:

我有 3 节课:-

public Class Example1
{
  public void Method1()
  {
  }
  public void Method2()
  {
  }
}

public Class Example2
{
  public void Method3()
  {
  }
  public void Method4()
  {
  }
}

public Class CompletelyDifferentClass
{
  public void DifferentMethod(Example1/Example2 obj)
  {
      obj.Method1(); //if object is passed for Example1
      obj.Method3(); //if object is passed for Example2
  }
}

如果我们看到 CompletelyDifferentClass 和 public DifferentMethod(Example1/Example2 obj)

我希望 DifferentMethod 可以在任何时候获取参数,因为我可以发送 Example1 对象或 Example2 对象。 如果发送 Example2 对象,它应该启用 Example2 的方法,例如 obj.Method3();

我将把哪个类的对象作为参数发送给那个方法并不固定。

如何为DifferentMethod编写代码

【问题讨论】:

  • 如果您不知道在编译时作为参数传递的对象的类型(键入object),那么您需要阅读Reflection。
  • 使用is 运算符或as 运算符,也许?但听起来重载会更好。这听起来有点像 X-Y 问题,不清楚它与 ASP.NET 有什么关系。

标签: c# asp.net .net


【解决方案1】:

您可以编写一个基类,然后从该基类继承您的子类。

然后您可以传递从同一类继承的任何类型的子类。喜欢

public class myBase{

}

public class A: myBase{

}

public class B: myBase{

}

public static void myFunction(myBase obj){

}

您可以将任何子类传递给您的基类,例如

myFunction(A);
myFunction(B);

另一种方法是使用方法重载。您可以编写具有相同签名的相同函数。 This 是函数重载的好读物

您也可以将对象作为参数类型。也许更好的是使用泛型:

void MyFunction<T>(T parm) {

}

希望对你有帮助:)

【讨论】:

  • 你如何称呼不同的方法来做这样的事情?
猜你喜欢
  • 2012-03-30
  • 2022-01-10
  • 2022-01-22
  • 2018-03-02
  • 2019-11-27
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多