繁体   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