ASP.Net Core中的自定义类

狂人

.NET Core的新手,我试图创建一个自定义类,可以从其他控制器调用它。

在项目的根目录下,我创建了一个名为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);

    //...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章