c# - ¿Cómo usar código inseguro en contextos seguros?
extension-methods unsafe (2)
No estoy seguro si necesita un código no seguro en ese caso (vea la respuesta de @mybirthname ).
Pero cuando se necesita un código inseguro, se puede habilitar en las propiedades del proyecto.
- En el menú principal, haga clic en
Project
y luego en<ProjectName> properties...
- Haga clic en la página
Build
. - Seleccione
Allow unsafe code
.
O uno puede especificar /unsafe opción de compilador /unsafe explícitamente.
Necesito usar SecureString
para una clase de Microsoft y encontré el siguiente código en internet :
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;
}
}
}
}
El único problema es que la palabra clave unsafe
sigue arrojándome un error que dice Cannot use unsafe construct in safe context
. Lamentablemente no pude encontrar por qué está sucediendo esto ...
Nota: el código anterior se ejecuta en LINQPad pero no en VS2013 (con resharper).
public static SecureString GetSecureString(string password)
{
SecureString secureString = new SecureString();
foreach (char c in password)
{
secureString.AppendChar(c);
}
secureString.MakeReadOnly();
return secureString;
}
Puedes hacer lo mismo sin código inseguro.