2014-10-13 5 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

Я имею в виду, могу ли я изменить CreateTime и CreateUser обоих ChildClass (они должны быть доступны из объекта childclass) из одного метода? Правильно ли создать метод с базовым классом в качестве параметра и передать экземпляры дочернего класса в качестве параметров и изменить их члены 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

Большое спасибо за ответ! –

Смежные вопросы