簡體   English   中英

ASP.Net Core中的自定義類

[英]Custom classes in 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);

    //...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM