ASP.Net 核心中的自定义 类
Custom classes in ASP.Net Core
.NET Core 的新手我正在尝试自定义 class,我可以从不同的控制器调用它。
在我项目的根目录中,我创建了一个名为 Helpers 的文件夹。我创建了 EncryptString.cs:
namespace VPV.Helpers {
public class EncryptString {
public string Index(string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
但是如何从我的控制器调用它?
我试过类似的方法:
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
hashedPassword = new VPV.Helpers.EncryptString [...]
}
但我被困在那里了。
我想您可能希望这是一个静态调用。然而,更好的方法是使该助手成为可注入服务,但不确定您是否认为它太高级或矫枉过正。
我只是建议它,因为你指出它将被多个控制器使用。
现在既然你提到你想保持简单,虽然不是最好的设计,但使方法静态,
namespace VPV.Helpers {
public static class Strings {
public string Encrypt(string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
并在需要的地方调用它。
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
//...
var hashedPassword = new VPV.Helpers.Strings.Encrypt(password, salt);
//...
}
您还可以考虑将助手转换为扩展方法
namespace VPV.Helpers {
public static class Strings {
public string Encrypt(this string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
这意味着你可以这样称呼它
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
//...
var hashedPassword = password.Encrypt(salt);
//...
}
.NET Core 的新手我正在尝试自定义 class,我可以从不同的控制器调用它。
在我项目的根目录中,我创建了一个名为 Helpers 的文件夹。我创建了 EncryptString.cs:
namespace VPV.Helpers {
public class EncryptString {
public string Index(string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
但是如何从我的控制器调用它?
我试过类似的方法:
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
hashedPassword = new VPV.Helpers.EncryptString [...]
}
但我被困在那里了。
我想您可能希望这是一个静态调用。然而,更好的方法是使该助手成为可注入服务,但不确定您是否认为它太高级或矫枉过正。
我只是建议它,因为你指出它将被多个控制器使用。
现在既然你提到你想保持简单,虽然不是最好的设计,但使方法静态,
namespace VPV.Helpers {
public static class Strings {
public string Encrypt(string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
并在需要的地方调用它。
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
//...
var hashedPassword = new VPV.Helpers.Strings.Encrypt(password, salt);
//...
}
您还可以考虑将助手转换为扩展方法
namespace VPV.Helpers {
public static class Strings {
public string Encrypt(this string val, string salt) {
byte[] data = Encoding.UTF8.GetBytes(val + salt);
data = SHA512.Create().ComputeHash(data);
return Convert.ToBase64String(data);
}
}
}
这意味着你可以这样称呼它
public async Task<IActionResult> OnPostAsync(Guid id, string password, string passwordCheck) {
//...
var hashedPassword = password.Encrypt(salt);
//...
}