我有一个基类
public abstract class BaseClass
{
public DateTime CreateTime { get; set; }
public string CreateUser { get; set; }
}
从基类派生的几个子类
public class Child1 : BaseClass
{
}
public class Child2 : BaseClass
{
}
对于使用这些子类的客户端,我可以在这些类之外创建一个方法,它可以接受子类作为参数并更改其基类对象吗?
答案 0 :(得分:4)
是的,你可以。这是基类和/或接口的要点:
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();
}
}
答案 1 :(得分:0)
您可以声明一种方法,将这两种类型作为参数:
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继承。