-4

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

在 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字符串。

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

4

2 回答 2

3

C#构造函数的创建方式如下:

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

注意它是如何与class. GetUserInfo每次创建新实例时都会调用该方法YourClass

于 2013-08-09T09:44:51.547 回答
2

C# 中的构造函数是不同的:

VB 中的构造函数用关键字标记new,在 c# 中,您通过创建与类同名的方法来实现。在 c#new中作为特殊方法没有任何意义(它相当于shadowsVB 中的 -keyword,完全不相关)。下面的示例展示了如何在 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();
    }   

}
于 2013-08-09T09:49:15.447 回答