Как использовать небезопасный код в safe contex?
мне нужно использовать SecureString
для класса Microsoft, и я нашел следующий код на интернет:
public static class SecureStringExt
{
public static SecureString ConvertToSecureString(this string password)
{
if (password == null)
throw new ArgumentNullException("password");
unsafe //Red highlighted line
{
fixed (char* passwordChars = password)
{
var securePassword = new SecureString(passwordChars, password.Length);
securePassword.MakeReadOnly();
return securePassword;
}
}
}
}
единственная проблема в том, что unsafe
ключевое слово продолжает бросать мне ошибку, говоря Cannot use unsafe construct in safe context
.
К сожалению, я не мог понять, почему это происходит...
Примечание: Приведенный выше код работает в LINQPad, но не в VS2013 (с resharper).
2 ответов
Я не уверен, что вам нужен небезопасный код в этом случае (см. ответ @mybirthname).
но когда требуется небезопасный код, его можно включить в свойствах проекта.
- в главном меню, нажмите кнопку
Project
а то<ProjectName> properties...
- нажмите на кнопку
Build
страница. - выберите
Allow unsafe code
.
или можно указать /небезопасных опции компилятора явно.
public static SecureString GetSecureString(string password)
{
SecureString secureString = new SecureString();
foreach (char c in password)
{
secureString.AppendChar(c);
}
secureString.MakeReadOnly();
return secureString;
}
вы можете сделать то же самое без небезопасный код.