簡體   English   中英

如何從派生類初始化基類屬性?

[英]How to initialize base class property from derived class?

我在我的mvc應用程序中編寫了以下代碼。

public class TestController : Controller
{
    public ActionResult StronglyTypedView()
    {
      var obj = new MvcRouting.Models.Student();
      obj.age = 24;
      obj.name = "prab";
      ViewData.Model = obj;
      return View();
    }
}

在上面的代碼中, ViewDataControllerBase類的屬性, ModelViewDataDictionary類的屬性。我在下面的代碼中試過但是我在property1中得到空值,如何解決這個問題?

 public interface Iface1
 {       
    int age { get; set; }
 }
 public class classA : Iface1
 {       
   public int age { get; set; }
 }
 public abstract class classB
 {       
    public classA Property1 { get; set; }
 }
 public class TEST : classB
 {
   public void test()
   {          
      Property1.age = 24;
   }
   public static void Main()
   {
     TEST obj = new TEST();
     obj.test();
     Console.Read();
   }
 }

您將獲得null引用異常,因為您需要在classB初始化Property1

 public interface Iface1
 {       
    int age { get; set; }
 }
 public class classA : Iface1
 {       
   public int age { get; set; }
 }
 public abstract class classB
 {       
    public classA Property1 { get; set; }
 }
 public class TEST : classB
 {
   public void test()
   {    
      if(Property1 == null)
      {
          Property1 = new classA();
      }

      Property1.age = 24;
   }
   public static void Main()
   {
     TEST obj = new TEST();
     obj.test();
     Console.Read();
   }
 }

請改用它。

public abstract class classB
{
 public classA Property1 { get; set; }

 public classB()
 {
   Property1 = new classA();
 }
}

您在設置其屬性之前忘記初始化Property1

public class TEST : classB
{
   public void test()
   {    
      Property1 = new classA();
      Property1.age = 24;
   }
   public static void Main()
   {
     TEST obj = new TEST();
     obj.test();
     Console.Read();
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM