在C#中实例化类时触发void

时间:2013-08-09 09:42:42

标签: c# .net asp.net-mvc asp.net-mvc-4 constructor

我希望能够在实例化类时触发一些代码。

在VB.NET WinForms中,我做过类似的事情:

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ' Add any initialization after the InitializeComponent() call.

End Sub

这很好用,我现在正尝试在C#MVC中做类似的事情。类似的东西:

public class ViewModelBase
{
    public string BrandName { get; set; }
    public UserRegistrationInformation UserSession;

    public void GetUserInfo()
    {
        WebUsersEntities db = new WebUsersEntities();
        UserSession = db.UserRegistrationInformations.Where(r => r.uri_UserID == WebSecurity.CurrentUserId).FirstOrDefault();
    }

    public void New(){
        GetUserInfo();
    }

}

因此,只要创建ViewModelBase,它就会自动填充UserSession字符串。

我一直试图谷歌这个,但我似乎找不到任何令人讨厌的东西,因为它应该很简单!

2 个答案:

答案 0 :(得分:3)

C#constructors创建如下:

public class ViewModelBase
{
    public ViewModelBase() 
    {
        GetUserInfo();
    }
}

请注意它与class的名称相同。每次创建GetUserInfo的新实例时,都会调用方法YourClass

答案 1 :(得分:2)

C#中的构造函数不同:

VB中的构造函数用关键字new标记,在c#中,您可以通过创建与该类同名的方法来实现。在c#new中没有任何意义作为特殊方法(它等同于VB中的shadows - 关键字,完全不相关)。下面的示例显示了如何在c#

中创建构造函数
public class ViewModelBase{

    public void ViewModelBase()
    {
        GetUserInfo();
    }

    public void GetUserInfo()
    {
        WebUsersEntities db = new WebUsersEntities();
        UserSession = db.UserRegistrationInformations.Where(r => r.uri_UserID == WebSecurity.CurrentUserId).FirstOrDefault();
    }   

}