2014-10-13 99 views
1

我有一个基类
传递子类作为参数

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

,很少从基类

public class Child1 : BaseClass 
{ 
} 

public class Child2 : BaseClass 
{ 
} 

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

+0

你可以更具体一点(在示例代码方面)你想实现什么? “改变基类对象”是什么意思? –

+1

“我可以创建一个方法吗......”在你创建这篇文章的时候,你可能试图自己编写代码。 –

+0

我的意思是我可以从一种方法更改两个ChildClasss的CreateTime和CreateUser(它们应该可以从childclass对象访问)?创建一个以baseclass为参数的方法并将子类实例作为参数传递并更改它们的createtime和createuser成员是正确的? –

回答

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(); 
    } 

} 
+0

谢谢队友!只是不确定这是否是正确的做法。 –

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继承。

+0

非常感谢您的回复! –