c# extension-methods unsafe securestring

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.