实例化子类C#时更新基类属性

时间:2013-11-02 10:00:08

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 c#-4.0

我想要以下内容,是否可以在C#

中使用
public class BaseClass
{
       public string Name {get;set;}
       public DateTime Login {get;set;}
}

public class ChildA : BaseClass
{
       public string SchoolName{get; set;}
       public string ClassName{get; set;}
}

public class childB : BaseClass
{
       public string StreetAdrees{get; set;}
}

现在我希望如果我创建任何子类的实例Name =“John”并且登录“2013-12-12”或者从数据库中已经设置了令人恼火的为每个类设置这些属性

就像那样

ChildA obj=new ChildA();

obj.Name and obj.Login already have Data

2 个答案:

答案 0 :(得分:3)

在基类中指定构造函数,然后在子类中创建构造函数,这些构造函数继承自下面的基类constuctor

public class ChildA : BaseClass
{
       public ChildA():base(){}
       public string SchoolName{get; set;}
       public string ClassName{get; set;}
}

public class BaseClass
{
      public BaseClass()
      {
          //set Data
           .....
      }
   ....
}

详细了解base keyword

答案 1 :(得分:0)

在下面的示例中,子节点实际上指向基本

的相同实例

该示例使用缓存,但它可以是其他任何内容(会话,应用程序状态等)。

public class BaseClass
{
    private string _name;
    private DateTime _login;

    public string Name
    {
        get
        {
            return Instance._name;
        }
        set
        {
            _name = value;
        }
    }
    public DateTime Login 
    {
        get
        {
            return Instance._login;
        }
        set
        {
            _login = value;
        }
    }

    public static BaseClass Instance
    {
        get 
        {
            // check if null, return a new instance  if null etc...
            return HttpContext.Current.Cache["BaseClassInstance"] as BaseClass;                
        }
        set
        {
            HttpContext.Current.Cache.Insert("BaseClassInstance", value);
        }
    }
}

public class ChildA : BaseClass
{
    public string SchoolName { get; set; }
    public string ClassName { get; set; }
}

public class childB : BaseClass
{
    public string StreetAdrees { get; set; }
}

测试它:

BaseClass.Instance = new BaseClass() { Login = DateTime.Now, Name = "Test" };

ChildA ch = new ChildA();

ChildA ch2 = new ChildA();

childB chb = new childB();

Response.Write(ch.Login.Millisecond);
Response.Write("<BR/>");
Response.Write(chb.Login.Millisecond);

结果:

906

906