C# 如何从类文件设置会话值

C# 如何从类文件设置会话值,c#,asp.net,C#,Asp.net,我使用下面的代码从类文件中分配一个会话变量。但我收到了错误消息“对象引用未设置为对象的实例” 实现目标的正确方法是(使用在线工具翻译成c#注意检查()或[]): 在示例中,还有许多其他方法可以实现相同的目标:使用属性和方法的SameClass: protected void Load() { MyObject _class = new MyObject; _class.surname="Surname"; _class.name="Name"; conte

我使用下面的代码从类文件中分配一个会话变量。但我收到了错误消息“对象引用未设置为对象的实例”


实现目标的正确方法是(使用在线工具翻译成c#注意检查()或[]):

在示例中,还有许多其他方法可以实现相同的目标:使用属性和方法的SameClass:

protected void Load()
{
     MyObject _class = new MyObject;
     _class.surname="Surname";
     _class.name="Name";
     context.Session.add("UserInfo"),_class.name + "-" + _class.surname);
}

所有这些都取决于您的类、方法、属性和逻辑。

我认为在类中访问
上下文不是一个好的做法。相反,您应该从类中返回所需的值,并让网页代码将其添加到会话中。关于您的问题:这个类是如何实例化和访问的?您的类在哪里?你没有得到编译时错误吗?我想从类文件分配。可能会重新阐述这个问题…我不确定我是否理解…从类文件分配是什么意思。你有一个自定义类,需要在其中管理会话吗?
if ((Session("UserSession") == null)) 
   {
     //example with simple string
     Session.Add("UserSession", "thisIsASimpletString");
    //Exmple with an Object NOTE: the constructor new if is required or you may handling in exception like your
    List<string> list = new List<string>();
    Session.Add("UserSession", list);
    } 
    else
    {
     //different case where session exist
     Session("UserSession") = "thisIsASimpletString";
     //case with object 
     List<string> list = new List<string>();
     Session("UserSession") = list;
    }
    protected void Page_Load(object sender, EventArgs e)
   {
    MyObject _class = new MyObject(HttpContext.Current);
    _class.SetNameAndSurname();
    Response.Write(Session("UserInfo").ToString);
   }
    private class MyObject
    {
    public void SetNameAndSurname()
    {
        if ((this.Context.Session("UserInfo") == null)) {
        this.Context.Session.Add("UserInfo", this.Surname + "-" + this.Name);
        } else {
        this.Context.Session("UserInfo") = this.Surname + "-" + this.Name;
        }
    }
    private string _Name;
    public string Name 
        {
        get { return _Name; }
        set { _Name = value; }
    }
    private string _Surname;
    public string Surname
        {
    get { return _Surname; }
    set { _Surname = value; }
    }
    private HttpContext _context;
    public HttpContext Context 
        {
        get { return _context; }
        set { _context = value; }
    }
    public MyObject(HttpContext Context)
    {
        this._context = Context;
    }

     public MyObject()
     {
     }
    }
protected void Load()
{
     MyObject _class = new MyObject;
     _class.surname="Surname";
     _class.name="Name";
     context.Session.add("UserInfo"),_class.name + "-" + _class.surname);
}