将Child类作为参数传递

本文关键字:参数传递 Child | 更新日期: 2023-09-27 18:26:16

我有一个基类

public abstract class BaseClass
{
    public DateTime CreateTime { get; set; }
    public string CreateUser { get; set; }
}

很少有从基类派生的子类

public class Child1 : BaseClass
{
}
public class Child2 : BaseClass
{
}

对于使用这些子类的客户端,我是否可以在这些类之外创建一个方法,该方法可以接受两个子类作为参数并更改其基类对象?

将Child类作为参数传递

可以。这就是基类和/或接口的要点:

public abstract class BaseClass
{
    public DateTime CreateTime { get; set; }
    public string CreateUser { get; set; }
}
public class Child1 : BaseClass
{
}
public class Child2 : BaseClass
{
}
public static class Test
{
   public static void SetBaseClassValue(BaseClass b)
   {
      b.CreateUser = "John";
   }
}
public static class Program
{
   public static void Main()
   {
      var c1 = new Child1();
      var c2 = new Child2();
      Test.SetBaseClassValue(c1);
      Test.SetBaseClassValue(c2);
      Console.WriteLine(c1.CreateUser);
      Console.WriteLine(c2.CreateUser);
      Console.ReadLine();
   }
}

您可以声明一个方法,该方法将两种类型都作为参数,如下所示:

public void SomeMethod(BaseClass class)
{
    class.CreateTime = DateTime.Now;
    class.CreateUser = "SomeUser";
}

然后调用这样的方法:

public Class1 class1 = new Class1();
public Class2 class2 = new Class2();
SomeMethod(class1);
SomeMethod(class2);

这两个子类都将继承抽象基类的属性,并且可以用作BaseClass参数,因为它们继承自BaseClass。