我希望能够在实例化类时触发一些代码。
在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
字符串。
我一直试图谷歌这个,但我似乎找不到任何令人讨厌的东西,因为它应该很简单!
答案 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();
}
}