簡體   English   中英

如果另一個類中的一個類如何在Mvc操作中調用一個類

[英]How to call a class in Mvc action if a class within the another class

在這里,我在另一個班級寫了一個班級,但是當我嘗試訪問該班級時,為什么我不能上那個班級

namespace ImageWithallCtrls.Models
{
    public class GeneralAssClass
    {
         public class AccessClass2 :BaseAccessClass
         {
             private GeneralAssClass GenAss;
             public string L_Name { get; set; }

         }
         public class AccessClass1 : BaseAccessClass
         {
             public string Middle_Name { get; set; }
             public string Gender { get; set; }
         }
    }
}

Home.cs

public ActionResult AbsAssClass(GeneralAssClass GenAss)
{  
    Access1 ass1 = new Access1()
    {
        F_Name = GenAss. // HereI'im getting Equal, GetHash, Gettype, Tostring why not my class names("AccessClass2 ","AccessClass1")
    };
    Access2 ass2 = new Access2()
    {

    };
    return View();
}

這里有兩個問題。

首先,您似乎在濫用內部類。

內部類只能在聲明它們的外部類中使用,因此它們應該始終是私有的。

為什么/何時應在.net中使用嵌套類? 難道不是嗎?

如果您希望在外部類之外訪問該類,則它應該是普通類,而不是內部類。

其次,您濫用了對象初始化語法。

使用對象初始化程序,您可以在創建時將值分配給對象的任何可訪問字段或屬性,而不必調用構造函數,后跟賦值語句行。

Access1 ass1 = new Access1()
{
    F_Name = GenAss. // HereI'im getting Equal, GetHash, Gettype, Tostring why not my class names("AccessClass2 ","AccessClass1")
};

括號{和}之間的位允許您設置ass1實例上的字段和屬性。

與寫作相同:

Access1 ass1 = new Access1();
ass1.F_Name = GenAss. // HereI'im getting Equal, GetHash, Gettype, Tostring why not my class names("AccessClass2 ","AccessClass1")

GenAss在此范圍內不存在,因此您無法訪問它。

要解決此問題,您應該通讀正在使用的功能,研究它們的最佳實踐,然后重組代碼,使其遵循這些最佳實踐,並且最重要的是,可以正常工作!

暫無
暫無

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

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