Servicios adicionales de iOption

Los mejores corredores de opciones binarias 2020:
  • Binarium
    Binarium

    1er lugar! El mejor broker de opciones binarias!
    Ideal para principiantes! Entrenamiento gratis! Bonos de registro!

  • FinMax
    FinMax

    2do lugar! Gran corredor!

Contents

Servicios adicionales de iOption

El broker de opciones binarias iOption recientemente añadió una serie de servicios adicionales a los que ofrece de forma regular.

Más periodos de expiración

iOption ofrece la posibilidad de operar con opciones binarias con una mayor variedad de periodos de vencimiento, lo cual le brinda acceso a este instrumento a operadores de corto, mediano y largo plazo. Ahora, el trader puede operar con opciones binarias cuyo vencimiento se produce al final del día, al final de la semana, al final del mes e incluso a final del año, lo que permite especular con movimientos del mercado a largo plazo.

Añadidos 50 nuevos activos subyacentes

Ahora iOption ofrece una selección global completa de divisas, acciones e índices de alrededor del mundo. La reciente adición de activos financieros del Oriente Medio le permite al trader operar incluso los domingos. Los nuevos activos de mercados cruzados son ofrecidos únicamente a través de las plataformas de trading de iOption.

Más cursos y seminarios

La academia de iOption ha completado su primer año ofreciendo cursos especialmente diseñado para operadores de opciones binarias. Actualmente, también ofrece webinarios gratuitos, presentaciones en Powerpoint, material escrito, seminarios sobre trading en vivo y clases adicionales.

Los servicios de iOption ahora están disponibles en la mayoría de los dispositivos móviles.

El trader tiene la posibilidad de acceder a su cuenta con iOption y operar con opciones binarias desde cualquier sitio con su dispositivo móvil en tanto tenga acceso a la Internet.

Nuevos métodos de trading incorporados

Este broker recientemente añadió un nuevo método de trading conocido como opciones de 60 segundos, el cual en poco tiempo se ha hecho sumamente popular ya que permite obtener altas ganancias en poco tiempo aprovechando los movimientos de corta duración en el mercado.

iOption también ha implementado otro nuevo estilo de trading a través de su plataforma de operaciones llamado «The Floating Platform», el cual consiste en un gráfico de precios en tiempo real que permite realizar operaciones directamente en este. Así mismo, esta aplicación permite el uso de funciones como Buy Me Out (permite al trader vender una opción directamente al broker en cualquier momento por un costo) entre otras.

Actualización

A mediados de noviembre del 2020 el broker iOption anunció sorpresivamente el cierre de sus operaciones (ver artículo sobre cierre de iOption) poco después de haber obtenido la licencia de iOption. Aparentemente la compañía quebró y ya no contaba con los recursos necesarios para pagar a sus clientes ni para continuar con sus operaciones regulares. Por lo tanto la promoción descrita en este artículo ya no tiene validez. Sin embargo, pueden acceder a otras promociones de brokers de opciones binarias que aún se encuentran activos por medio del siguiente enlace:

Ioption

Noticia Importante

Iopcion ha cerrado sus puertas y ya no es posible ni seguro operar en este broker, puedes leer la noticia completa de este cierre en el siguiente link: Ioption cierra sus puertas.

Os aconsejamos que leais nuestro articulo sobre los brokers regulados y seguros para este 2020.

Ioption es un bróker que dispone de una amplia selección de más de 85 activos financieros con los que negociar entre los que se incluyen los mejores índices bursátiles, pares de divisas, acciones y materias primas.

Fue fundada en octubre del 2009 y su sede central está ubicada en Chipre, cómo casi todos los brókers. Su plataforma es muy intuitiva y fácil de utilizar, sobre todo para los inversores principiantes.

Aún así, siempre es recomendable echarle un vistazo para familiarizarse con el funcionamiento de la plataforma antes de empezar cualquier operación. Los idiomas disponibles son los siguientes: inglés, alemán, francés, español, italiano, portugués, rumano, turco y árabe.

Carazterísticas únicas:

  • Fundada en: Octubre del 2009
  • Dirección: Chipre
  • Déposito Mínimo: $250
  • Trading Mínimo: $10
  • Maximo por opción: $1000
  • Idiomas: Igles, Español, Frances, Aleman y 6 idiomas más

Una de las ventajas de utilizar Ioption es que a diferencia de otras plataformas en esta no es necesaria la descarga de ningún tipo de software. Sin embargo, un inconveniente que le encuentran muchos usuarios es que no dispone de cuenta demo gratuita, así que sí o sí hay que empezar poniendo dinero de nuestro bolsillo. No obstante, la inversión mínima no es demasiado excesiva así que no es tan complicado iniciar las operaciones.

Para más detalles, el monto mínimo requerido para crearse una cuenta es de $250. En cuanto a las cantidades para las negociaciones basta con un mínimo de $10 para iniciar una transacción y el máximo permitido por cada opción es de $1.000.

Tipos de cuentas

Dentro de las posibilidades que ofrece Ioption a la hora de operar en la plataforma podrás optar entre 4 tipos diferentes de cuentas con peculiaridades diferentes. Con todas por ejemplo podrás optar al bono de bienvenida y las promociones generales que se anuncien en la web además de la información diaria de los analistas de la plataforma.

Tendrás a tu disposición 4 tipos de cuenta: Principiante, Estándar, First Class y Elite.

Según elijas una u otro tipo de cuenta podrás tener acceso a la Academia iOption en la que podrás disfrutar de estupendos seminarios, eventos de aprendizaje y material muy recomendable para enseñarte nuevas tácticas.

Añadimos a ello un servicio exclusivo de alertas por correo electrónico que te avisarán ante los eventos más relevantes de tus inversiones en opciones binarias.

Los mejores corredores de opciones binarias 2020:
  • Binarium
    Binarium

    1er lugar! El mejor broker de opciones binarias!
    Ideal para principiantes! Entrenamiento gratis! Bonos de registro!

  • FinMax
    FinMax

    2do lugar! Gran corredor!

Podrás optar además a la protección de tus inversiones añadiendo a las mismas la posibilidad de un reembolso de parte de lo invertido si el resultado no te es favorable.

Sin duda alguna si lo que buscas es una trato excepcional y no te sirve cualquier cosa a la hora de invertir, se exigente y elige el tipo de cuenta Diamond Elite. No quedarás indiferente.

Aprendiendo con Ioption

Como te hemos dejado entrever, para Ioption es muy importante no solo la calidad que ofrecen a sus inversores sino que estos sepan en todo momento lo que hacen y por supuesto estén a la última en conocimiento para que obtengan los mejores resultados.

Es por ello que la parte educacional de la plataforma está muy lograda y se va actualizando de manera constante.

En primer lugar queremos hablaros de Academy, una plataforma para que los inversores más primerizos se conviertan en profesionales a base de conocimientos avanzados y análisis de las mejores estrategias.

Invierte tu tiempo en crear una gestión de riesgos mínima para tus inversiones echando un vistazo a la extensa videoteca que ofrece sus seminarios web.

Además de estas herramientas tendrás acceso a un extenso glosario orientativo, un ebook completamente gratuito y las preguntas frecuentes que te saquen de dudas en los momentos más usuales.

Bonos y promociones:

El bono de bienvenida que ofrece este bróker es muy atractivo lo que permitirá a cualquier inversor hacerse con una cantidad más grande para realizar sus primeras negociaciones.

Esta bonificación varía según la cantidad depositada pudiendo obtener entre el 10% y el 50% de la suma invertida. La rentabilidad que ofrece esta plataforma de opciones es de hasta el 80% para las opciones acertadas.

Aún así, también incluye la opción de reembolso para opciones con pérdidas de entre el 5% y el 10%.

Negociaciones

En este broker se ofrecen distintas opciones para negociar. Están las más populares conocidas como de “Todo o nada” o Above/Below donde el inversor sólo tiene que preocuparse por fijar si el precio del activo subirá o bajará en el momento en que la opción expire.

Estas opciones ofrecen una rentabilidad de hasta el 81% de las ganancias.

Después tenemos las opciones “One Touch” que ofrecen hasta el 400% de ganancias. Muchos inversores aprovechan los fines de semana, cuando los mercados están cerrados, para solicitar cotizaciones y mantener sus posiciones abiertas durante el fin de semana hasta que alcanzan su objetivo.

Para invertir en Ioption basta con elegir una opción, escoger un activo y fecha de expiración, fijar que dirección tomará el activo (CALL o PUT) y elegir la cantidad que deseamos invertir. Así de fácil.

Métodos de ingreso y retiro

Para iniciar operaciones en este bróker en línea se pueden realizar los depósitos por transferencia bancaria, tarjetas de crédito y sistemas de pago electrónicos donde se incluye la opción de utilizar Skrill (Moneybookers) o CashU.

Para los retiros del dinero se pueden utilizar los mismos canales, y no se cobrará ninguna comisión sí se realiza la operación una vez al mes. Para más retiros adicionales la cuota es de $30 aproximadamente por lo que se recomienda acumular un monto de dinero y realizar los retiros de forma mensual.

Asimismo, es necesario identificarse enviando los documentos permitentes por correo electrónico o por fax para mayor protección.

Atención al cliente

En cuanto a los servicios de atención al cliente se puede contactar con el personal de Ioption a través de chat en español, por teléfono y correo electrónico las 24 horas del día. Durante el fin de semana es mas complicado poder contactar con el equipo de soporte.

En total tiene un servicio de atención al cliente en más de 7 idiomas por lo que no te será complicado solventar tus dudas.

Promociones y Novedades

Ioption es un bróker que cuenta con 85 de los mejores activos financieros en su cartera de inversión y una rentabilidad de más del 80% en las operaciones de estilo todo o nada. Para utilizar esta plataforma no es necesario la descarga de software, basta con entrar en la web para acceder a todas sus prestaciones. La cuenta gratuita que ofrece es muy práctica pues nos ofrece la posibilidad de probar sin preocuparnos por el dinero.

A la hora de ponerse a operar este bróker ofrece desde un 10% hasta un 50% de bonificación de bienvenida según la cantidad invertida. El monto mínimo para acceder es de $250. Después las cantidades para las operaciones van desde un mínimo de $10 hasta un máximo de $1.000 para cada opción.

Promociones y Novedades

Tarjeta Master VIP. Ofrece la posibilidad de disponer de una tarjeta master vip de débito para tener acceso las 24 horas de tus fondos obtenidos en la plataforma. Se trata de una MasterCard usual vinculada directamente a tu cuenta de Ioption. ¡Genial idea!

Ahora podrás obtener la mejor educación del mundo de inversión en más de 7 idiomas. Poco a poco la plataforma iOption pone más esfuerzo por que los inversionistas sean más eficientes con el trabajo en el mercado de valores. Invierte siempre con cabeza y no pongas en riesgos innecesarios tus fondos.

PatrГіn de opciones en ASP.NET Core Options pattern in ASP.NET Core

El patrГіn de opciones usa clases para representar grupos de configuraciones relacionadas. The options pattern uses classes to represent groups of related settings. Cuando los valores de configuraciГіn estГЎn aislados por escenario en clases independientes, la aplicaciГіn se ajusta a dos principios de ingenierГ­a de software importantes: When configuration settings are isolated by scenario into separate classes, the app adheres to two important software engineering principles:

  • El principio de segregaciГіn de interfaz (ISP) o encapsulaciГіn – Los escenarios (clases) que dependen de valores de configuraciГіn dependen Гєnicamente de los valores de configuraciГіn que usen. The Interface Segregation Principle (ISP) or Encapsulation – Scenarios (classes) that depend on configuration settings depend only on the configuration settings that they use.
  • SeparaciГіn de intereses – Los valores de configuraciГіn para distintos elementos de la aplicaciГіn no son dependientes entre sГ­ ni estГЎn emparejados. Separation of Concerns – Settings for different parts of the app aren’t dependent or coupled to one another.

Las opciones tambiГ©n proporcionan un mecanismo para validar los datos de configuraciГіn. Options also provide a mechanism to validate configuration data. Para obtener mГЎs informaciГіn, consulte la secciГіn Opciones de validaciГіn. For more information, see the Options validation section.

Paquete Package

Se hace referencia implГ­cita al paquete Microsoft.Extensions.Options.ConfigurationExtensions en las aplicaciones de ASP.NET Core. The Microsoft.Extensions.Options.ConfigurationExtensions package is implicitly referenced in ASP.NET Core apps.

Interfaces de opciones Options interfaces

IOptionsMonitor se usa para recuperar las opciones y administrar las notificaciones de las opciones para instancias de TOptions . IOptionsMonitor is used to retrieve options and manage options notifications for TOptions instances. IOptionsMonitor admite las siguientes situaciones: IOptionsMonitor supports the following scenarios:

Los escenarios posteriores a la configuraciГіn le permiten establecer o cambiar las opciones despuГ©s de que finalice toda la configuraciГіn de IConfigureOptions . Post-configuration scenarios allow you to set or change options after all IConfigureOptions configuration occurs.

IOptionsFactory es responsable de crear nuevas instancias de opciones. IOptionsFactory is responsible for creating new options instances. Tiene un solo mГ©todo Create. It has a single Create method. La implementaciГіn predeterminada toma todas las instancias registradas de IConfigureOptions y IPostConfigureOptions , y establece todas las configuraciones primero, seguidas de las configuraciones posteriores. The default implementation takes all registered IConfigureOptions and IPostConfigureOptions and runs all the configurations first, followed by the post-configuration. Distingue entre IConfigureNamedOptions y IConfigureOptions , y solo llama a la interfaz adecuada. It distinguishes between IConfigureNamedOptions and IConfigureOptions and only calls the appropriate interface.

IOptionsMonitorCache se usa por IOptionsMonitor para almacenar en cachГ© las instancias de TOptions . IOptionsMonitorCache is used by IOptionsMonitor to cache TOptions instances. IOptionsMonitorCache invalida instancias de opciones en la supervisiГіn para que se pueda volver a calcular el valor (TryRemove). The IOptionsMonitorCache invalidates options instances in the monitor so that the value is recomputed (TryRemove). Los valores se pueden introducir manualmente y mediante TryAdd. Values can be manually introduced with TryAdd. Se usa el mГ©todo Clear cuando todas las instancias con nombre se deben volver a crear a peticiГіn. The Clear method is used when all named instances should be recreated on demand.

IOptionsSnapshot es Гєtil en escenarios donde se deben volver a calcular las opciones en cada solicitud. IOptionsSnapshot is useful in scenarios where options should be recomputed on every request. Para obtener mГЎs informaciГіn, consulte la secciГіn Volver a cargar los datos de configuraciГіn con IOptionsSnapshot. For more information, see the Reload configuration data with IOptionsSnapshot section.

IOptions puede utilizarse para admitir las opciones. IOptions can be used to support options. Sin embargo, IOptions no es compatible con los escenarios anteriores de IOptionsMonitor . However, IOptions doesn’t support the preceding scenarios of IOptionsMonitor . AГєn puede usar IOptions en marcos y bibliotecas existentes que ya usan la interfaz IOptions y no requieren los escenarios proporcionados por IOptionsMonitor . You may continue to use IOptions in existing frameworks and libraries that already use the IOptions interface and don’t require the scenarios provided by IOptionsMonitor .

ConfiguraciГіn de opciones generales General options configuration

La configuraciГіn de opciones generales se muestra en el ejemplo 1 en la aplicaciГіn de ejemplo. General options configuration is demonstrated as Example 1 in the sample app.

Una clase de opciones debe ser no abstracta con un constructor pГєblico sin parГЎmetros. An options class must be non-abstract with a public parameterless constructor. La siguiente clase, MyOptions , tiene dos propiedades: Option1 y Option2 . The following class, MyOptions , has two properties, Option1 and Option2 . Configurar los valores predeterminados es opcional, pero el constructor de clases en el ejemplo siguiente establece el valor predeterminado de Option1 . Setting default values is optional, but the class constructor in the following example sets the default value of Option1 . Option2 tiene un valor predeterminado que se establece al inicializar la propiedad directamente (Models/MyOptions.cs): Option2 has a default value set by initializing the property directly (Models/MyOptions.cs):

La clase MyOptions se agrega al contenedor de servicios con Configure y se enlaza a la configuraciГіn: The MyOptions class is added to the service container with Configure and bound to configuration:

El siguiente modelo de pГЎgina usa la inserciГіn de dependencias de constructor con IOptionsMonitor para acceder a la configuraciГіn (Pages/Index.cshtml.cs): The following page model uses constructor dependency injection with IOptionsMonitor to access the settings (Pages/Index.cshtml.cs):

El archivo appSettings.json del ejemplo especifica valores para option1 y option2 : The sample’s appsettings.json file specifies values for option1 and option2 :

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

Al usar una instancia de ConfigurationBuilder personalizada para cargar las opciones de configuraciГіn desde un archivo de configuraciГіn, confirme que la ruta de acceso base estГ© configurada correctamente: When using a custom ConfigurationBuilder to load options configuration from a settings file, confirm that the base path is set correctly:

Al cargar las opciones de configuraciГіn desde el archivo de configuraciГіn a travГ©s de CreateDefaultBuilder, no es necesario establecer de forma explГ­cita la ruta de acceso base. Explicitly setting the base path isn’t required when loading options configuration from the settings file via CreateDefaultBuilder.

Configurar opciones simples con un delegado Configure simple options with a delegate

La configuraciГіn de opciones simples con un delegado se muestra como ejemplo 2 en la aplicaciГіn de ejemplo. Configuring simple options with a delegate is demonstrated as Example 2 in the sample app.

Use un delegado para establecer los valores de opciones. Use a delegate to set options values. La aplicaciГіn de ejemplo usa la clase MyOptionsWithDelegateConfig (Models/MyOptionsWithDelegateConfig.cs): The sample app uses the MyOptionsWithDelegateConfig class (Models/MyOptionsWithDelegateConfig.cs):

En el cГіdigo siguiente, un segundo servicio IConfigureOptions se agrega al contenedor de servicios. In the following code, a second IConfigureOptions service is added to the service container. Usa un delegado para configurar el enlace con MyOptionsWithDelegateConfig : It uses a delegate to configure the binding with MyOptionsWithDelegateConfig :

Puede agregar varios proveedores de configuraciГіn. You can add multiple configuration providers. Los proveedores de configuraciГіn estГЎn disponibles en paquetes de NuGet y se aplican en el orden en que estГЎn registrados. Configuration providers are available from NuGet packages and are applied in the order that they’re registered. Para obtener mГЎs informaciГіn, consulta ConfiguraciГіn en ASP.NET Core. For more information, see ConfiguraciГіn en ASP.NET Core.

Cada llamada a Configure agrega un servicio IConfigureOptions al contenedor de servicios. Each call to Configure adds an IConfigureOptions service to the service container. En el ejemplo anterior, los valores de Option1 y Option2 se especifican en appSettings.json, pero los valores de Option1 y Option2 se reemplazan por el delegado configurado. In the preceding example, the values of Option1 and Option2 are both specified in appsettings.json, but the values of Option1 and Option2 are overridden by the configured delegate.

Cuando se habilita mГЎs de un servicio de configuraciГіn, la Гєltima fuente de configuraciГіn especificada gana y establece el valor de configuraciГіn. When more than one configuration service is enabled, the last configuration source specified wins and sets the configuration value. Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

ConfiguraciГіn de subopciones Suboptions configuration

La configuraciГіn de subopciones se muestra en el ejemplo 3 en la aplicaciГіn de ejemplo. Suboptions configuration is demonstrated as Example 3 in the sample app.

Las aplicaciones deben crear clases de opciones que pertenezcan a grupos especГ­ficos de escenarios (clases) en la aplicaciГіn. Apps should create options classes that pertain to specific scenario groups (classes) in the app. Los elementos de la aplicaciГіn que requieran valores de configuraciГіn deben acceder solamente a los valores de configuraciГіn que usen. Parts of the app that require configuration values should only have access to the configuration values that they use.

Al enlazar opciones para la configuraciГіn, cada propiedad en el tipo de opciones se enlaza a una clave de configuraciГіn del formulario property[:sub-property:] . When binding options to configuration, each property in the options type is bound to a configuration key of the form property[:sub-property:] . Por ejemplo, la propiedad MyOptions.Option1 se enlaza a la clave Option1 , que se lee desde la propiedad option1 en appSettings.json. For example, the MyOptions.Option1 property is bound to the key Option1 , which is read from the option1 property in appsettings.json.

En el cГіdigo siguiente, se agrega un tercer servicio IConfigureOptions al contenedor de servicios. In the following code, a third IConfigureOptions service is added to the service container. Enlaza MySubOptions a la secciГіn subsection del archivo appsettings.json: It binds MySubOptions to the section subsection of the appsettings.json file:

El mГ©todo GetSection requiere el espacio de nombres Microsoft.Extensions.Configuration. The GetSection method requires the Microsoft.Extensions.Configuration namespace.

El archivo appSettings.json del ejemplo define un miembro subsection con las claves para suboption1 y suboption2 : The sample’s appsettings.json file defines a subsection member with keys for suboption1 and suboption2 :

La clase MySubOptions define propiedades, SubOption1 y SubOption2 , para mantener los valores de opciones (Models/MySubOptions.cs): The MySubOptions class defines properties, SubOption1 and SubOption2 , to hold the options values (Models/MySubOptions.cs):

El mГ©todo OnGet del modelo de pГЎgina devuelve una cadena con los valores de opciones (Pages/Index.cshtml.cs): The page model’s OnGet method returns a string with the options values (Pages/Index.cshtml.cs):

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet devuelve una cadena que muestra los valores de clase de subopciones: When the app is run, the OnGet method returns a string showing the suboption class values:

InserciГіn de opciones Options injection

La inserciГіn de opciones se muestra en el ejemplo 4 en la aplicaciГіn de ejemplo. Options injection is demonstrated as Example 4 in the sample app.

  • Una instancia de Razor Pages o una vista de MVC con la directiva @inject de Razor. A Razor page or MVC view with the @inject Razor directive.
  • Un modelo de pГЎgina o vista. A page or view model.

En el ejemplo siguiente de la aplicaciГіn de ejemplo, inserte IOptionsMonitor en un modelo de pГЎgina (Pages/Index.cshtml.cs): The following example from the sample app injects IOptionsMonitor into a page model (Pages/Index.cshtml.cs):

La aplicaciГіn de ejemplo muestra cГіmo insertar IOptionsMonitor con una directiva @inject : The sample app shows how to inject IOptionsMonitor with an @inject directive:

Cuando se ejecuta la aplicaciГіn, se muestran los valores de opciones en la pГЎgina representada: When the app is run, the options values are shown in the rendered page:

Volver a cargar los datos de configuraciГіn con IOptionsSnapshot Reload configuration data with IOptionsSnapshot

El procedimiento de volver a cargar los datos de configuraciГіn con IOptionsSnapshot se muestra en el ejemplo 5 en la aplicaciГіn de ejemplo. Reloading configuration data with IOptionsSnapshot is demonstrated in Example 5 in the sample app.

Al usar IOptionsSnapshot , cuando se accede a las opciones y se las almacena en cachГ© durante la vigencia de la solicitud, se calculan una vez por solicitud. Using IOptionsSnapshot , options are computed once per request when accessed and cached for the lifetime of the request.

La diferencia entre IOptionsMonitor y IOptionsSnapshot es que: The difference between IOptionsMonitor and IOptionsSnapshot is that:

  • IOptionsMonitor es un servicio singleton que recupera los valores de las opciones actuales en cualquier momento, lo que resulta especialmente Гєtil en las dependencias singleton. IOptionsMonitor is a singleton service that retrieves current option values at any time, which is especially useful in singleton dependencies.
  • IOptionsSnapshot es un servicio con ГЎmbito y proporciona una instantГЎnea de las opciones en el momento en que se construye el objeto IOptionsSnapshot . IOptionsSnapshot is a scoped service and provides a snapshot of the options at the time the IOptionsSnapshot object is constructed. Las instantГЎneas de opciones estГЎn diseГ±adas para usarlas con dependencias transitorias y con ГЎmbito. Options snapshots are designed for use with transient and scoped dependencies.

En el ejemplo siguiente se muestra cГіmo se crea un nuevo IOptionsSnapshot despuГ©s de cambiar el archivo appSettings.json (Pages/Index.cshtml.cs). The following example demonstrates how a new IOptionsSnapshot is created after appsettings.json changes (Pages/Index.cshtml.cs). Varias solicitudes al servidor devuelven valores constantes proporcionados por el archivo appSettings.json hasta que se modifique el archivo y vuelva a cargarse la configuraciГіn. Multiple requests to the server return constant values provided by the appsettings.json file until the file is changed and configuration reloads.

En la siguiente imagen se muestran los valores option1 y option2 iniciales cargados desde el archivo appSettings.json: The following image shows the initial option1 and option2 values loaded from the appsettings.json file:

Cambie los valores del archivo appSettings.json a value1_from_json UPDATED y 200 . Change the values in the appsettings.json file to value1_from_json UPDATED and 200 . Guarde el archivo appSettings.json. Save the appsettings.json file. Actualice el explorador para ver quГ© valores de opciones se han actualizado: Refresh the browser to see that the options values are updated:

Compatibilidad de opciones con nombre con IConfigureNamedOptions Named options support with IConfigureNamedOptions

La compatibilidad de opciones con nombre con IConfigureNamedOptions se muestra en el ejemplo 6 de la aplicaciГіn de ejemplo. Named options support with IConfigureNamedOptions is demonstrated as Example 6 in the sample app.

La compatibilidad con las opciones con nombre permite a la aplicaciГіn distinguir entre las configuraciones de opciones con nombre. Named options support allows the app to distinguish between named options configurations. En la aplicaciГіn de ejemplo, las opciones con nombre se declaran con OptionsServiceCollectionExtensions.Configure, que llama al mГ©todo de extensiГіn ConfigureNamedOptions .Configure. In the sample app, named options are declared with OptionsServiceCollectionExtensions.Configure, which calls the ConfigureNamedOptions .Configure extension method. Las opciones con nombre distinguen mayГєsculas de minГєsculas. Named options are case sensitive.

La aplicaciГіn de ejemplo accede a las opciones con nombre con Get (Pages/Index.cshtml.cs): The sample app accesses the named options with Get (Pages/Index.cshtml.cs):

Al ejecutar la aplicaciГіn de ejemplo, se devuelven las opciones con nombre: Running the sample app, the named options are returned:

Se proporcionan valores de named_options_1 a partir de la configuraciГіn, que se cargan desde el archivo appSettings.json. named_options_1 values are provided from configuration, which are loaded from the appsettings.json file. Los valores de named_options_2 los proporciona: named_options_2 values are provided by:

  • El delegado named_options_2 en ConfigureServices para Option1 . The named_options_2 delegate in ConfigureServices for Option1 .
  • El valor predeterminado para Option2 proporcionado por la clase MyOptions . The default value for Option2 provided by the MyOptions class.

Configurar todas las opciones con el mГ©todo ConfigureAll Configure all options with the ConfigureAll method

Configure todas las instancias de opciones con el mГ©todo ConfigureAll. Configure all options instances with the ConfigureAll method. El siguiente cГіdigo configura Option1 para todas las instancias de configuraciГіn con un valor comГєn. The following code configures Option1 for all configuration instances with a common value. Agregue manualmente este cГіdigo al mГ©todo Startup.ConfigureServices : Add the following code manually to the Startup.ConfigureServices method:

Al ejecutar la aplicaciГіn de ejemplo despuГ©s de agregar el cГіdigo se produce el siguiente resultado: Running the sample app after adding the code produces the following result:

Todas las opciones son instancias con nombre. All options are named instances. Las instancias de IConfigureOptions existentes se usan para seleccionar como destino la instancia de Options.DefaultName , que es string.Empty . Existing IConfigureOptions instances are treated as targeting the Options.DefaultName instance, which is string.Empty . IConfigureNamedOptions tambiГ©n implementa IConfigureOptions . IConfigureNamedOptions also implements IConfigureOptions . La implementaciГіn predeterminada de IOptionsFactory tiene lГіgica para usar cada una de forma adecuada. The default implementation of the IOptionsFactory has logic to use each appropriately. La opciГіn con nombre null se usa para seleccionar como destino todas las instancias con nombre, en lugar de una instancia con nombre determinada (ConfigureAll y PostConfigureAll usan esta convenciГіn). The null named option is used to target all of the named instances instead of a specific named instance (ConfigureAll and PostConfigureAll use this convention).

API OptionsBuilder OptionsBuilder API

OptionsBuilder se usa para configurar instancias TOptions . OptionsBuilder is used to configure TOptions instances. OptionsBuilder simplifica la creaciГіn de opciones con nombre, ya que es un Гєnico parГЎmetro para la llamada AddOptions (string optionsName) inicial en lugar de aparecer en todas las llamadas posteriores. OptionsBuilder streamlines creating named options as it’s only a single parameter to the initial AddOptions (string optionsName) call instead of appearing in all of the subsequent calls. La validaciГіn de opciones y las sobrecargas ConfigureOptions que aceptan las dependencias de servicio solo estГЎn disponibles mediante OptionsBuilder . Options validation and the ConfigureOptions overloads that accept service dependencies are only available via OptionsBuilder .

Uso de servicios de DI para configurar opciones Use DI services to configure options

Hay dos formas de acceder a otros servicios desde la inserciГіn de dependencias durante la configuraciГіn de opciones: You can access other services from dependency injection while configuring options in two ways:

Si se pasa un delegado de configuraciГіn a Configure en OptionsBuilder . Pass a configuration delegate to Configure on OptionsBuilder . OptionsBuilder proporciona sobrecargas de Configure que permiten usar hasta cinco servicios para configurar las opciones: OptionsBuilder provides overloads of Configure that allow use up to five services to configure options:

Si se crea un tipo propio que implementa IConfigureOptions o IConfigureNamedOptions , y se registrar como un servicio. Create your own type that implements IConfigureOptions or IConfigureNamedOptions and register the type as a service.

Se recomienda pasar un delegado de configuraciГіn a Configure, ya que la creaciГіn de un servicio es mГЎs complicada. We recommend passing a configuration delegate to Configure, since creating a service is more complex. La creaciГіn de un tipo propio es equivalente a lo que el marco hace de forma automГЎtica cuando se usa Configure. Creating your own type is equivalent to what the framework does for you when you use Configure. La llamada a Configure registra una interfaz IConfigureNamedOptions genГ©rica y transitoria, con un constructor que acepta los tipos de servicio genГ©ricos especificados. Calling Configure registers a transient generic IConfigureNamedOptions , which has a constructor that accepts the generic service types specified.

Opciones de validaciГіn Options validation

Las opciones de validaciГіn permiten validar las opciones cuando se configuran. Options validation allows you to validate options when options are configured. Llame a Validate con un mГ©todo de validaciГіn que devuelve true si las opciones son vГЎlidas y false si no lo son: Call Validate with a validation method that returns true if options are valid and false if they aren’t valid:

Si quiere que los comentarios de cГіdigo se traduzcan en mГЎs idiomas ademГЎs del inglГ©s, hГЎganoslo saber en este problema de debate de GitHub. If you would like to see code comments translated to languages other than English, let us know in this GitHub discussion issue.

El ejemplo anterior establece la instancia de opciones con nombre en optionalOptionsName . The preceding example sets the named options instance to optionalOptionsName . La instancia predeterminada es Options.DefaultName . The default options instance is Options.DefaultName .

La validaciГіn se ejecuta cuando se crea la instancia de opciones. Validation runs when the options instance is created. Una instancia de opciones pasa seguro la validaciГіn la primera vez que se accede. An options instance is guaranteed to pass validation the first time it’s accessed.

La validaciГіn de opciones no protege contra las modificaciones de opciones despuГ©s de crearse la instancia de opciones. Options validation doesn’t guard against options modifications after the options instance is created. Por ejemplo, las opciones IOptionsSnapshot se crean y validan una vez por solicitud al obtenerse acceso a estas por primera vez. For example, IOptionsSnapshot options are created and validated once per request when the options are first accessed. Las opciones IOptionsSnapshot no se validarГЎn de nuevo en intentos de acceso posteriores para la misma solicitud. The IOptionsSnapshot options aren’t validated again on subsequent access attempts for the same request.

El mГ©todo Validate acepta una expresiГіn Func . The Validate method accepts a Func . Para personalizar completamente la validaciГіn, implemente IValidateOptions , que permite: To fully customize validation, implement IValidateOptions , which allows:

  • ValidaciГіn de varios tipos de opciones: class ValidateTwo : IValidateOptions , IValidationOptions Validation of multiple options types: class ValidateTwo : IValidateOptions , IValidationOptions
  • ValidaciГіn que depende de otro tipo de opciГіn: public DependsOnAnotherOptionValidator(IOptionsMonitor options) Validation that depends on another option type: public DependsOnAnotherOptionValidator(IOptionsMonitor options)

IValidateOptions valida: IValidateOptions validates:

  • Una instancia de opciones con nombre especГ­fica. A specific named options instance.
  • Todas las opciones cuando name es null . All options when name is null .

Devuelve ValidateOptionsResult de la implementaciГіn de la interfaz: Return a ValidateOptionsResult from your implementation of the interface:

La validaciГіn basada en la anotaciГіn de datos estГЎ disponible en el paquete Microsoft.Extensions.Options.DataAnnotations llamando al mГ©todo ValidateDataAnnotations en OptionsBuilder . Data Annotation-based validation is available from the Microsoft.Extensions.Options.DataAnnotations package by calling the ValidateDataAnnotations method on OptionsBuilder . Se hace referencia implГ­cita a Microsoft.Extensions.Options.DataAnnotations en las aplicaciones de ASP.NET Core. Microsoft.Extensions.Options.DataAnnotations is implicitly referenced in ASP.NET Core apps.

La validaciГіn diligente (con respuesta rГЎpida a errores en el inicio) se estГЎ teniendo en cuenta de cara a una versiГіn futura. Eager validation (fail fast at startup) is under consideration for a future release.

ConfiguraciГіn posterior de las opciones Options post-configuration

Establezca la configuraciГіn posterior con IPostConfigureOptions . Set post-configuration with IPostConfigureOptions . La configuraciГіn posterior se ejecuta una vez completada toda la configuraciГіn de IConfigureOptions : Post-configuration runs after all IConfigureOptions configuration occurs:

PostConfigure estГЎ disponible para configurar posteriormente las opciones con nombre: PostConfigure is available to post-configure named options:

Use PostConfigureAll para configurar posteriormente todas las instancias de configuraciГіn: Use PostConfigureAll to post-configure all configuration instances:

Acceso a opciones durante el inicio Accessing options during startup

IOptions y IOptionsMonitor puede usarse en Startup.Configure , ya que los servicios se compilan antes de que se ejecute el mГ©todo Configure . IOptions and IOptionsMonitor can be used in Startup.Configure , since services are built before the Configure method executes.

No use IOptions o IOptionsMonitor en Startup.ConfigureServices . Don’t use IOptions or IOptionsMonitor in Startup.ConfigureServices . Puede que exista un estado incoherente de opciones debido al orden de los registros de servicio. An inconsistent options state may exist due to the ordering of service registrations.

El patrГіn de opciones usa clases para representar grupos de configuraciones relacionadas. The options pattern uses classes to represent groups of related settings. Cuando los valores de configuraciГіn estГЎn aislados por escenario en clases independientes, la aplicaciГіn se ajusta a dos principios de ingenierГ­a de software importantes: When configuration settings are isolated by scenario into separate classes, the app adheres to two important software engineering principles:

  • El principio de segregaciГіn de interfaz (ISP) o encapsulaciГіn – Los escenarios (clases) que dependen de valores de configuraciГіn dependen Гєnicamente de los valores de configuraciГіn que usen. The Interface Segregation Principle (ISP) or Encapsulation – Scenarios (classes) that depend on configuration settings depend only on the configuration settings that they use.
  • SeparaciГіn de intereses – Los valores de configuraciГіn para distintos elementos de la aplicaciГіn no son dependientes entre sГ­ ni estГЎn emparejados. Separation of Concerns – Settings for different parts of the app aren’t dependent or coupled to one another.

Las opciones tambiГ©n proporcionan un mecanismo para validar los datos de configuraciГіn. Options also provide a mechanism to validate configuration data. Para obtener mГЎs informaciГіn, consulte la secciГіn Opciones de validaciГіn. For more information, see the Options validation section.

Requisitos previos Prerequisites

Interfaces de opciones Options interfaces

IOptionsMonitor se usa para recuperar las opciones y administrar las notificaciones de las opciones para instancias de TOptions . IOptionsMonitor is used to retrieve options and manage options notifications for TOptions instances. IOptionsMonitor admite las siguientes situaciones: IOptionsMonitor supports the following scenarios:

Los escenarios posteriores a la configuraciГіn le permiten establecer o cambiar las opciones despuГ©s de que finalice toda la configuraciГіn de IConfigureOptions . Post-configuration scenarios allow you to set or change options after all IConfigureOptions configuration occurs.

IOptionsFactory es responsable de crear nuevas instancias de opciones. IOptionsFactory is responsible for creating new options instances. Tiene un solo mГ©todo Create. It has a single Create method. La implementaciГіn predeterminada toma todas las instancias registradas de IConfigureOptions y IPostConfigureOptions , y establece todas las configuraciones primero, seguidas de las configuraciones posteriores. The default implementation takes all registered IConfigureOptions and IPostConfigureOptions and runs all the configurations first, followed by the post-configuration. Distingue entre IConfigureNamedOptions y IConfigureOptions , y solo llama a la interfaz adecuada. It distinguishes between IConfigureNamedOptions and IConfigureOptions and only calls the appropriate interface.

IOptionsMonitorCache se usa por IOptionsMonitor para almacenar en cachГ© las instancias de TOptions . IOptionsMonitorCache is used by IOptionsMonitor to cache TOptions instances. IOptionsMonitorCache invalida instancias de opciones en la supervisiГіn para que se pueda volver a calcular el valor (TryRemove). The IOptionsMonitorCache invalidates options instances in the monitor so that the value is recomputed (TryRemove). Los valores se pueden introducir manualmente y mediante TryAdd. Values can be manually introduced with TryAdd. Se usa el mГ©todo Clear cuando todas las instancias con nombre se deben volver a crear a peticiГіn. The Clear method is used when all named instances should be recreated on demand.

IOptionsSnapshot es Гєtil en escenarios donde se deben volver a calcular las opciones en cada solicitud. IOptionsSnapshot is useful in scenarios where options should be recomputed on every request. Para obtener mГЎs informaciГіn, consulte la secciГіn Volver a cargar los datos de configuraciГіn con IOptionsSnapshot. For more information, see the Reload configuration data with IOptionsSnapshot section.

IOptions puede utilizarse para admitir las opciones. IOptions can be used to support options. Sin embargo, IOptions no es compatible con los escenarios anteriores de IOptionsMonitor . However, IOptions doesn’t support the preceding scenarios of IOptionsMonitor . AГєn puede usar IOptions en marcos y bibliotecas existentes que ya usan la interfaz IOptions y no requieren los escenarios proporcionados por IOptionsMonitor . You may continue to use IOptions in existing frameworks and libraries that already use the IOptions interface and don’t require the scenarios provided by IOptionsMonitor .

ConfiguraciГіn de opciones generales General options configuration

La configuraciГіn de opciones generales se muestra en el ejemplo 1 en la aplicaciГіn de ejemplo. General options configuration is demonstrated as Example 1 in the sample app.

Una clase de opciones debe ser no abstracta con un constructor pГєblico sin parГЎmetros. An options class must be non-abstract with a public parameterless constructor. La siguiente clase, MyOptions , tiene dos propiedades: Option1 y Option2 . The following class, MyOptions , has two properties, Option1 and Option2 . Configurar los valores predeterminados es opcional, pero el constructor de clases en el ejemplo siguiente establece el valor predeterminado de Option1 . Setting default values is optional, but the class constructor in the following example sets the default value of Option1 . Option2 tiene un valor predeterminado que se establece al inicializar la propiedad directamente (Models/MyOptions.cs): Option2 has a default value set by initializing the property directly (Models/MyOptions.cs):

La clase MyOptions se agrega al contenedor de servicios con Configure y se enlaza a la configuraciГіn: The MyOptions class is added to the service container with Configure and bound to configuration:

El siguiente modelo de pГЎgina usa la inserciГіn de dependencias de constructor con IOptionsMonitor para acceder a la configuraciГіn (Pages/Index.cshtml.cs): The following page model uses constructor dependency injection with IOptionsMonitor to access the settings (Pages/Index.cshtml.cs):

El archivo appSettings.json del ejemplo especifica valores para option1 y option2 : The sample’s appsettings.json file specifies values for option1 and option2 :

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

Al usar una instancia de ConfigurationBuilder personalizada para cargar las opciones de configuraciГіn desde un archivo de configuraciГіn, confirme que la ruta de acceso base estГ© configurada correctamente: When using a custom ConfigurationBuilder to load options configuration from a settings file, confirm that the base path is set correctly:

Al cargar las opciones de configuraciГіn desde el archivo de configuraciГіn a travГ©s de CreateDefaultBuilder, no es necesario establecer de forma explГ­cita la ruta de acceso base. Explicitly setting the base path isn’t required when loading options configuration from the settings file via CreateDefaultBuilder.

Configurar opciones simples con un delegado Configure simple options with a delegate

La configuraciГіn de opciones simples con un delegado se muestra como ejemplo 2 en la aplicaciГіn de ejemplo. Configuring simple options with a delegate is demonstrated as Example 2 in the sample app.

Use un delegado para establecer los valores de opciones. Use a delegate to set options values. La aplicaciГіn de ejemplo usa la clase MyOptionsWithDelegateConfig (Models/MyOptionsWithDelegateConfig.cs): The sample app uses the MyOptionsWithDelegateConfig class (Models/MyOptionsWithDelegateConfig.cs):

En el cГіdigo siguiente, un segundo servicio IConfigureOptions se agrega al contenedor de servicios. In the following code, a second IConfigureOptions service is added to the service container. Usa un delegado para configurar el enlace con MyOptionsWithDelegateConfig : It uses a delegate to configure the binding with MyOptionsWithDelegateConfig :

Puede agregar varios proveedores de configuraciГіn. You can add multiple configuration providers. Los proveedores de configuraciГіn estГЎn disponibles en paquetes de NuGet y se aplican en el orden en que estГЎn registrados. Configuration providers are available from NuGet packages and are applied in the order that they’re registered. Para obtener mГЎs informaciГіn, consulta ConfiguraciГіn en ASP.NET Core. For more information, see ConfiguraciГіn en ASP.NET Core.

Cada llamada a Configure agrega un servicio IConfigureOptions al contenedor de servicios. Each call to Configure adds an IConfigureOptions service to the service container. En el ejemplo anterior, los valores de Option1 y Option2 se especifican en appSettings.json, pero los valores de Option1 y Option2 se reemplazan por el delegado configurado. In the preceding example, the values of Option1 and Option2 are both specified in appsettings.json, but the values of Option1 and Option2 are overridden by the configured delegate.

Cuando se habilita mГЎs de un servicio de configuraciГіn, la Гєltima fuente de configuraciГіn especificada gana y establece el valor de configuraciГіn. When more than one configuration service is enabled, the last configuration source specified wins and sets the configuration value. Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

ConfiguraciГіn de subopciones Suboptions configuration

La configuraciГіn de subopciones se muestra en el ejemplo 3 en la aplicaciГіn de ejemplo. Suboptions configuration is demonstrated as Example 3 in the sample app.

Las aplicaciones deben crear clases de opciones que pertenezcan a grupos especГ­ficos de escenarios (clases) en la aplicaciГіn. Apps should create options classes that pertain to specific scenario groups (classes) in the app. Los elementos de la aplicaciГіn que requieran valores de configuraciГіn deben acceder solamente a los valores de configuraciГіn que usen. Parts of the app that require configuration values should only have access to the configuration values that they use.

Al enlazar opciones para la configuraciГіn, cada propiedad en el tipo de opciones se enlaza a una clave de configuraciГіn del formulario property[:sub-property:] . When binding options to configuration, each property in the options type is bound to a configuration key of the form property[:sub-property:] . Por ejemplo, la propiedad MyOptions.Option1 se enlaza a la clave Option1 , que se lee desde la propiedad option1 en appSettings.json. For example, the MyOptions.Option1 property is bound to the key Option1 , which is read from the option1 property in appsettings.json.

En el cГіdigo siguiente, se agrega un tercer servicio IConfigureOptions al contenedor de servicios. In the following code, a third IConfigureOptions service is added to the service container. Enlaza MySubOptions a la secciГіn subsection del archivo appsettings.json: It binds MySubOptions to the section subsection of the appsettings.json file:

El mГ©todo GetSection requiere el espacio de nombres Microsoft.Extensions.Configuration. The GetSection method requires the Microsoft.Extensions.Configuration namespace.

El archivo appSettings.json del ejemplo define un miembro subsection con las claves para suboption1 y suboption2 : The sample’s appsettings.json file defines a subsection member with keys for suboption1 and suboption2 :

La clase MySubOptions define propiedades, SubOption1 y SubOption2 , para mantener los valores de opciones (Models/MySubOptions.cs): The MySubOptions class defines properties, SubOption1 and SubOption2 , to hold the options values (Models/MySubOptions.cs):

El mГ©todo OnGet del modelo de pГЎgina devuelve una cadena con los valores de opciones (Pages/Index.cshtml.cs): The page model’s OnGet method returns a string with the options values (Pages/Index.cshtml.cs):

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet devuelve una cadena que muestra los valores de clase de subopciones: When the app is run, the OnGet method returns a string showing the suboption class values:

InserciГіn de opciones Options injection

La inserciГіn de opciones se muestra en el ejemplo 4 en la aplicaciГіn de ejemplo. Options injection is demonstrated as Example 4 in the sample app.

  • Una instancia de Razor Pages o una vista de MVC con la directiva @inject de Razor. A Razor page or MVC view with the @inject Razor directive.
  • Un modelo de pГЎgina o vista. A page or view model.

En el ejemplo siguiente de la aplicaciГіn de ejemplo, inserte IOptionsMonitor en un modelo de pГЎgina (Pages/Index.cshtml.cs): The following example from the sample app injects IOptionsMonitor into a page model (Pages/Index.cshtml.cs):

La aplicaciГіn de ejemplo muestra cГіmo insertar IOptionsMonitor con una directiva @inject : The sample app shows how to inject IOptionsMonitor with an @inject directive:

Cuando se ejecuta la aplicaciГіn, se muestran los valores de opciones en la pГЎgina representada: When the app is run, the options values are shown in the rendered page:

Volver a cargar los datos de configuraciГіn con IOptionsSnapshot Reload configuration data with IOptionsSnapshot

El procedimiento de volver a cargar los datos de configuraciГіn con IOptionsSnapshot se muestra en el ejemplo 5 en la aplicaciГіn de ejemplo. Reloading configuration data with IOptionsSnapshot is demonstrated in Example 5 in the sample app.

Al usar IOptionsSnapshot , cuando se accede a las opciones y se las almacena en cachГ© durante la vigencia de la solicitud, se calculan una vez por solicitud. Using IOptionsSnapshot , options are computed once per request when accessed and cached for the lifetime of the request.

La diferencia entre IOptionsMonitor y IOptionsSnapshot es que: The difference between IOptionsMonitor and IOptionsSnapshot is that:

  • IOptionsMonitor es un servicio singleton que recupera los valores de las opciones actuales en cualquier momento, lo que resulta especialmente Гєtil en las dependencias singleton. IOptionsMonitor is a singleton service that retrieves current option values at any time, which is especially useful in singleton dependencies.
  • IOptionsSnapshot es un servicio con ГЎmbito y proporciona una instantГЎnea de las opciones en el momento en que se construye el objeto IOptionsSnapshot . IOptionsSnapshot is a scoped service and provides a snapshot of the options at the time the IOptionsSnapshot object is constructed. Las instantГЎneas de opciones estГЎn diseГ±adas para usarlas con dependencias transitorias y con ГЎmbito. Options snapshots are designed for use with transient and scoped dependencies.

En el ejemplo siguiente se muestra cГіmo se crea un nuevo IOptionsSnapshot despuГ©s de cambiar el archivo appSettings.json (Pages/Index.cshtml.cs). The following example demonstrates how a new IOptionsSnapshot is created after appsettings.json changes (Pages/Index.cshtml.cs). Varias solicitudes al servidor devuelven valores constantes proporcionados por el archivo appSettings.json hasta que se modifique el archivo y vuelva a cargarse la configuraciГіn. Multiple requests to the server return constant values provided by the appsettings.json file until the file is changed and configuration reloads.

En la siguiente imagen se muestran los valores option1 y option2 iniciales cargados desde el archivo appSettings.json: The following image shows the initial option1 and option2 values loaded from the appsettings.json file:

Cambie los valores del archivo appSettings.json a value1_from_json UPDATED y 200 . Change the values in the appsettings.json file to value1_from_json UPDATED and 200 . Guarde el archivo appSettings.json. Save the appsettings.json file. Actualice el explorador para ver quГ© valores de opciones se han actualizado: Refresh the browser to see that the options values are updated:

Compatibilidad de opciones con nombre con IConfigureNamedOptions Named options support with IConfigureNamedOptions

La compatibilidad de opciones con nombre con IConfigureNamedOptions se muestra en el ejemplo 6 de la aplicaciГіn de ejemplo. Named options support with IConfigureNamedOptions is demonstrated as Example 6 in the sample app.

La compatibilidad con las opciones con nombre permite a la aplicaciГіn distinguir entre las configuraciones de opciones con nombre. Named options support allows the app to distinguish between named options configurations. En la aplicaciГіn de ejemplo, las opciones con nombre se declaran con OptionsServiceCollectionExtensions.Configure, que llama al mГ©todo de extensiГіn ConfigureNamedOptions .Configure. In the sample app, named options are declared with OptionsServiceCollectionExtensions.Configure, which calls the ConfigureNamedOptions .Configure extension method. Las opciones con nombre distinguen mayГєsculas de minГєsculas. Named options are case sensitive.

La aplicaciГіn de ejemplo accede a las opciones con nombre con Get (Pages/Index.cshtml.cs): The sample app accesses the named options with Get (Pages/Index.cshtml.cs):

Al ejecutar la aplicaciГіn de ejemplo, se devuelven las opciones con nombre: Running the sample app, the named options are returned:

Se proporcionan valores de named_options_1 a partir de la configuraciГіn, que se cargan desde el archivo appSettings.json. named_options_1 values are provided from configuration, which are loaded from the appsettings.json file. Los valores de named_options_2 los proporciona: named_options_2 values are provided by:

  • El delegado named_options_2 en ConfigureServices para Option1 . The named_options_2 delegate in ConfigureServices for Option1 .
  • El valor predeterminado para Option2 proporcionado por la clase MyOptions . The default value for Option2 provided by the MyOptions class.

Configurar todas las opciones con el mГ©todo ConfigureAll Configure all options with the ConfigureAll method

Configure todas las instancias de opciones con el mГ©todo ConfigureAll. Configure all options instances with the ConfigureAll method. El siguiente cГіdigo configura Option1 para todas las instancias de configuraciГіn con un valor comГєn. The following code configures Option1 for all configuration instances with a common value. Agregue manualmente este cГіdigo al mГ©todo Startup.ConfigureServices : Add the following code manually to the Startup.ConfigureServices method:

Al ejecutar la aplicaciГіn de ejemplo despuГ©s de agregar el cГіdigo se produce el siguiente resultado: Running the sample app after adding the code produces the following result:

Todas las opciones son instancias con nombre. All options are named instances. Las instancias de IConfigureOptions existentes se usan para seleccionar como destino la instancia de Options.DefaultName , que es string.Empty . Existing IConfigureOptions instances are treated as targeting the Options.DefaultName instance, which is string.Empty . IConfigureNamedOptions tambiГ©n implementa IConfigureOptions . IConfigureNamedOptions also implements IConfigureOptions . La implementaciГіn predeterminada de IOptionsFactory tiene lГіgica para usar cada una de forma adecuada. The default implementation of the IOptionsFactory has logic to use each appropriately. La opciГіn con nombre null se usa para seleccionar como destino todas las instancias con nombre, en lugar de una instancia con nombre determinada (ConfigureAll y PostConfigureAll usan esta convenciГіn). The null named option is used to target all of the named instances instead of a specific named instance (ConfigureAll and PostConfigureAll use this convention).

API OptionsBuilder OptionsBuilder API

OptionsBuilder se usa para configurar instancias TOptions . OptionsBuilder is used to configure TOptions instances. OptionsBuilder simplifica la creaciГіn de opciones con nombre, ya que es un Гєnico parГЎmetro para la llamada AddOptions (string optionsName) inicial en lugar de aparecer en todas las llamadas posteriores. OptionsBuilder streamlines creating named options as it’s only a single parameter to the initial AddOptions (string optionsName) call instead of appearing in all of the subsequent calls. La validaciГіn de opciones y las sobrecargas ConfigureOptions que aceptan las dependencias de servicio solo estГЎn disponibles mediante OptionsBuilder . Options validation and the ConfigureOptions overloads that accept service dependencies are only available via OptionsBuilder .

Uso de servicios de DI para configurar opciones Use DI services to configure options

Hay dos formas de acceder a otros servicios desde la inserciГіn de dependencias durante la configuraciГіn de opciones: You can access other services from dependency injection while configuring options in two ways:

Si se pasa un delegado de configuraciГіn a Configure en OptionsBuilder . Pass a configuration delegate to Configure on OptionsBuilder . OptionsBuilder proporciona sobrecargas de Configure que permiten usar hasta cinco servicios para configurar las opciones: OptionsBuilder provides overloads of Configure that allow you to use up to five services to configure options:

Si se crea un tipo propio que implementa IConfigureOptions o IConfigureNamedOptions , y se registrar como un servicio. Create your own type that implements IConfigureOptions or IConfigureNamedOptions and register the type as a service.

Se recomienda pasar un delegado de configuraciГіn a Configure, ya que la creaciГіn de un servicio es mГЎs complicada. We recommend passing a configuration delegate to Configure, since creating a service is more complex. La creaciГіn de un tipo propio es equivalente a lo que el marco hace de forma automГЎtica cuando se usa Configure. Creating your own type is equivalent to what the framework does for you when you use Configure. La llamada a Configure registra una interfaz IConfigureNamedOptions genГ©rica y transitoria, con un constructor que acepta los tipos de servicio genГ©ricos especificados. Calling Configure registers a transient generic IConfigureNamedOptions , which has a constructor that accepts the generic service types specified.

Opciones de validaciГіn Options validation

Las opciones de validaciГіn permiten validar las opciones cuando se configuran. Options validation allows you to validate options when options are configured. Llame a Validate con un mГ©todo de validaciГіn que devuelve true si las opciones son vГЎlidas y false si no lo son: Call Validate with a validation method that returns true if options are valid and false if they aren’t valid:

El ejemplo anterior establece la instancia de opciones con nombre en optionalOptionsName . The preceding example sets the named options instance to optionalOptionsName . La instancia predeterminada es Options.DefaultName . The default options instance is Options.DefaultName .

La validaciГіn se ejecuta cuando se crea la instancia de opciones. Validation runs when the options instance is created. Una instancia de opciones pasa seguro la validaciГіn la primera vez que se accede. An options instance is guaranteed to pass validation the first time it’s accessed.

La validaciГіn de opciones no protege contra las modificaciones de opciones despuГ©s de crearse la instancia de opciones. Options validation doesn’t guard against options modifications after the options instance is created. Por ejemplo, las opciones IOptionsSnapshot se crean y validan una vez por solicitud al obtenerse acceso a estas por primera vez. For example, IOptionsSnapshot options are created and validated once per request when the options are first accessed. Las opciones IOptionsSnapshot no se validarГЎn de nuevo en intentos de acceso posteriores para la misma solicitud. The IOptionsSnapshot options aren’t validated again on subsequent access attempts for the same request.

El mГ©todo Validate acepta una expresiГіn Func . The Validate method accepts a Func . Para personalizar completamente la validaciГіn, implemente IValidateOptions , que permite: To fully customize validation, implement IValidateOptions , which allows:

  • ValidaciГіn de varios tipos de opciones: class ValidateTwo : IValidateOptions , IValidationOptions Validation of multiple options types: class ValidateTwo : IValidateOptions , IValidationOptions
  • ValidaciГіn que depende de otro tipo de opciГіn: public DependsOnAnotherOptionValidator(IOptionsMonitor options) Validation that depends on another option type: public DependsOnAnotherOptionValidator(IOptionsMonitor options)

IValidateOptions valida: IValidateOptions validates:

  • Una instancia de opciones con nombre especГ­fica. A specific named options instance.
  • Todas las opciones cuando name es null . All options when name is null .

Devuelve ValidateOptionsResult de la implementaciГіn de la interfaz: Return a ValidateOptionsResult from your implementation of the interface:

La validaciГіn basada en la anotaciГіn de datos estГЎ disponible en el paquete Microsoft.Extensions.Options.DataAnnotations llamando al mГ©todo ValidateDataAnnotations en OptionsBuilder . Data Annotation-based validation is available from the Microsoft.Extensions.Options.DataAnnotations package by calling the ValidateDataAnnotations method on OptionsBuilder . Microsoft.Extensions.Options.DataAnnotations se incluye en el metapaquete Microsoft.AspNetCore.App. Microsoft.Extensions.Options.DataAnnotations is included in the Microsoft.AspNetCore.App metapackage.

La validaciГіn diligente (con respuesta rГЎpida a errores en el inicio) se estГЎ teniendo en cuenta de cara a una versiГіn futura. Eager validation (fail fast at startup) is under consideration for a future release.

ConfiguraciГіn posterior de las opciones Options post-configuration

Establezca la configuraciГіn posterior con IPostConfigureOptions . Set post-configuration with IPostConfigureOptions . La configuraciГіn posterior se ejecuta una vez completada toda la configuraciГіn de IConfigureOptions : Post-configuration runs after all IConfigureOptions configuration occurs:

PostConfigure estГЎ disponible para configurar posteriormente las opciones con nombre: PostConfigure is available to post-configure named options:

Use PostConfigureAll para configurar posteriormente todas las instancias de configuraciГіn: Use PostConfigureAll to post-configure all configuration instances:

Acceso a opciones durante el inicio Accessing options during startup

IOptions y IOptionsMonitor puede usarse en Startup.Configure , ya que los servicios se compilan antes de que se ejecute el mГ©todo Configure . IOptions and IOptionsMonitor can be used in Startup.Configure , since services are built before the Configure method executes.

No use IOptions o IOptionsMonitor en Startup.ConfigureServices . Don’t use IOptions or IOptionsMonitor in Startup.ConfigureServices . Puede que exista un estado incoherente de opciones debido al orden de los registros de servicio. An inconsistent options state may exist due to the ordering of service registrations.

El patrГіn de opciones usa clases para representar grupos de configuraciones relacionadas. The options pattern uses classes to represent groups of related settings. Cuando los valores de configuraciГіn estГЎn aislados por escenario en clases independientes, la aplicaciГіn se ajusta a dos principios de ingenierГ­a de software importantes: When configuration settings are isolated by scenario into separate classes, the app adheres to two important software engineering principles:

  • El principio de segregaciГіn de interfaz (ISP) o encapsulaciГіn – Los escenarios (clases) que dependen de valores de configuraciГіn dependen Гєnicamente de los valores de configuraciГіn que usen. The Interface Segregation Principle (ISP) or Encapsulation – Scenarios (classes) that depend on configuration settings depend only on the configuration settings that they use.
  • SeparaciГіn de intereses – Los valores de configuraciГіn para distintos elementos de la aplicaciГіn no son dependientes entre sГ­ ni estГЎn emparejados. Separation of Concerns – Settings for different parts of the app aren’t dependent or coupled to one another.

Las opciones tambiГ©n proporcionan un mecanismo para validar los datos de configuraciГіn. Options also provide a mechanism to validate configuration data. Para obtener mГЎs informaciГіn, consulte la secciГіn Opciones de validaciГіn. For more information, see the Options validation section.

Requisitos previos Prerequisites

Interfaces de opciones Options interfaces

IOptionsMonitor se usa para recuperar las opciones y administrar las notificaciones de las opciones para instancias de TOptions . IOptionsMonitor is used to retrieve options and manage options notifications for TOptions instances. IOptionsMonitor admite las siguientes situaciones: IOptionsMonitor supports the following scenarios:

Los escenarios posteriores a la configuraciГіn le permiten establecer o cambiar las opciones despuГ©s de que finalice toda la configuraciГіn de IConfigureOptions . Post-configuration scenarios allow you to set or change options after all IConfigureOptions configuration occurs.

IOptionsFactory es responsable de crear nuevas instancias de opciones. IOptionsFactory is responsible for creating new options instances. Tiene un solo mГ©todo Create. It has a single Create method. La implementaciГіn predeterminada toma todas las instancias registradas de IConfigureOptions y IPostConfigureOptions , y establece todas las configuraciones primero, seguidas de las configuraciones posteriores. The default implementation takes all registered IConfigureOptions and IPostConfigureOptions and runs all the configurations first, followed by the post-configuration. Distingue entre IConfigureNamedOptions y IConfigureOptions , y solo llama a la interfaz adecuada. It distinguishes between IConfigureNamedOptions and IConfigureOptions and only calls the appropriate interface.

IOptionsMonitorCache se usa por IOptionsMonitor para almacenar en cachГ© las instancias de TOptions . IOptionsMonitorCache is used by IOptionsMonitor to cache TOptions instances. IOptionsMonitorCache invalida instancias de opciones en la supervisiГіn para que se pueda volver a calcular el valor (TryRemove). The IOptionsMonitorCache invalidates options instances in the monitor so that the value is recomputed (TryRemove). Los valores se pueden introducir manualmente y mediante TryAdd. Values can be manually introduced with TryAdd. Se usa el mГ©todo Clear cuando todas las instancias con nombre se deben volver a crear a peticiГіn. The Clear method is used when all named instances should be recreated on demand.

IOptionsSnapshot es Гєtil en escenarios donde se deben volver a calcular las opciones en cada solicitud. IOptionsSnapshot is useful in scenarios where options should be recomputed on every request. Para obtener mГЎs informaciГіn, consulte la secciГіn Volver a cargar los datos de configuraciГіn con IOptionsSnapshot. For more information, see the Reload configuration data with IOptionsSnapshot section.

IOptions puede utilizarse para admitir las opciones. IOptions can be used to support options. Sin embargo, IOptions no es compatible con los escenarios anteriores de IOptionsMonitor . However, IOptions doesn’t support the preceding scenarios of IOptionsMonitor . AГєn puede usar IOptions en marcos y bibliotecas existentes que ya usan la interfaz IOptions y no requieren los escenarios proporcionados por IOptionsMonitor . You may continue to use IOptions in existing frameworks and libraries that already use the IOptions interface and don’t require the scenarios provided by IOptionsMonitor .

ConfiguraciГіn de opciones generales General options configuration

La configuraciГіn de opciones generales se muestra en el ejemplo 1 en la aplicaciГіn de ejemplo. General options configuration is demonstrated as Example 1 in the sample app.

Una clase de opciones debe ser no abstracta con un constructor pГєblico sin parГЎmetros. An options class must be non-abstract with a public parameterless constructor. La siguiente clase, MyOptions , tiene dos propiedades: Option1 y Option2 . The following class, MyOptions , has two properties, Option1 and Option2 . Configurar los valores predeterminados es opcional, pero el constructor de clases en el ejemplo siguiente establece el valor predeterminado de Option1 . Setting default values is optional, but the class constructor in the following example sets the default value of Option1 . Option2 tiene un valor predeterminado que se establece al inicializar la propiedad directamente (Models/MyOptions.cs): Option2 has a default value set by initializing the property directly (Models/MyOptions.cs):

La clase MyOptions se agrega al contenedor de servicios con Configure y se enlaza a la configuraciГіn: The MyOptions class is added to the service container with Configure and bound to configuration:

El siguiente modelo de pГЎgina usa la inserciГіn de dependencias de constructor con IOptionsMonitor para acceder a la configuraciГіn (Pages/Index.cshtml.cs): The following page model uses constructor dependency injection with IOptionsMonitor to access the settings (Pages/Index.cshtml.cs):

El archivo appSettings.json del ejemplo especifica valores para option1 y option2 : The sample’s appsettings.json file specifies values for option1 and option2 :

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

Al usar una instancia de ConfigurationBuilder personalizada para cargar las opciones de configuraciГіn desde un archivo de configuraciГіn, confirme que la ruta de acceso base estГ© configurada correctamente: When using a custom ConfigurationBuilder to load options configuration from a settings file, confirm that the base path is set correctly:

Al cargar las opciones de configuraciГіn desde el archivo de configuraciГіn a travГ©s de CreateDefaultBuilder, no es necesario establecer de forma explГ­cita la ruta de acceso base. Explicitly setting the base path isn’t required when loading options configuration from the settings file via CreateDefaultBuilder.

Configurar opciones simples con un delegado Configure simple options with a delegate

La configuraciГіn de opciones simples con un delegado se muestra como ejemplo 2 en la aplicaciГіn de ejemplo. Configuring simple options with a delegate is demonstrated as Example 2 in the sample app.

Use un delegado para establecer los valores de opciones. Use a delegate to set options values. La aplicaciГіn de ejemplo usa la clase MyOptionsWithDelegateConfig (Models/MyOptionsWithDelegateConfig.cs): The sample app uses the MyOptionsWithDelegateConfig class (Models/MyOptionsWithDelegateConfig.cs):

En el cГіdigo siguiente, un segundo servicio IConfigureOptions se agrega al contenedor de servicios. In the following code, a second IConfigureOptions service is added to the service container. Usa un delegado para configurar el enlace con MyOptionsWithDelegateConfig : It uses a delegate to configure the binding with MyOptionsWithDelegateConfig :

Puede agregar varios proveedores de configuraciГіn. You can add multiple configuration providers. Los proveedores de configuraciГіn estГЎn disponibles en paquetes de NuGet y se aplican en el orden en que estГЎn registrados. Configuration providers are available from NuGet packages and are applied in the order that they’re registered. Para obtener mГЎs informaciГіn, consulta ConfiguraciГіn en ASP.NET Core. For more information, see ConfiguraciГіn en ASP.NET Core.

Cada llamada a Configure agrega un servicio IConfigureOptions al contenedor de servicios. Each call to Configure adds an IConfigureOptions service to the service container. En el ejemplo anterior, los valores de Option1 y Option2 se especifican en appSettings.json, pero los valores de Option1 y Option2 se reemplazan por el delegado configurado. In the preceding example, the values of Option1 and Option2 are both specified in appsettings.json, but the values of Option1 and Option2 are overridden by the configured delegate.

Cuando se habilita mГЎs de un servicio de configuraciГіn, la Гєltima fuente de configuraciГіn especificada gana y establece el valor de configuraciГіn. When more than one configuration service is enabled, the last configuration source specified wins and sets the configuration value. Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet del modelo de pГЎgina devuelve una cadena que muestra los valores de la clase de opciГіn: When the app is run, the page model’s OnGet method returns a string showing the option class values:

ConfiguraciГіn de subopciones Suboptions configuration

La configuraciГіn de subopciones se muestra en el ejemplo 3 en la aplicaciГіn de ejemplo. Suboptions configuration is demonstrated as Example 3 in the sample app.

Las aplicaciones deben crear clases de opciones que pertenezcan a grupos especГ­ficos de escenarios (clases) en la aplicaciГіn. Apps should create options classes that pertain to specific scenario groups (classes) in the app. Los elementos de la aplicaciГіn que requieran valores de configuraciГіn deben acceder solamente a los valores de configuraciГіn que usen. Parts of the app that require configuration values should only have access to the configuration values that they use.

Al enlazar opciones para la configuraciГіn, cada propiedad en el tipo de opciones se enlaza a una clave de configuraciГіn del formulario property[:sub-property:] . When binding options to configuration, each property in the options type is bound to a configuration key of the form property[:sub-property:] . Por ejemplo, la propiedad MyOptions.Option1 se enlaza a la clave Option1 , que se lee desde la propiedad option1 en appSettings.json. For example, the MyOptions.Option1 property is bound to the key Option1 , which is read from the option1 property in appsettings.json.

En el cГіdigo siguiente, se agrega un tercer servicio IConfigureOptions al contenedor de servicios. In the following code, a third IConfigureOptions service is added to the service container. Enlaza MySubOptions a la secciГіn subsection del archivo appsettings.json: It binds MySubOptions to the section subsection of the appsettings.json file:

El mГ©todo GetSection requiere el espacio de nombres Microsoft.Extensions.Configuration. The GetSection method requires the Microsoft.Extensions.Configuration namespace.

El archivo appSettings.json del ejemplo define un miembro subsection con las claves para suboption1 y suboption2 : The sample’s appsettings.json file defines a subsection member with keys for suboption1 and suboption2 :

La clase MySubOptions define propiedades, SubOption1 y SubOption2 , para mantener los valores de opciones (Models/MySubOptions.cs): The MySubOptions class defines properties, SubOption1 and SubOption2 , to hold the options values (Models/MySubOptions.cs):

El mГ©todo OnGet del modelo de pГЎgina devuelve una cadena con los valores de opciones (Pages/Index.cshtml.cs): The page model’s OnGet method returns a string with the options values (Pages/Index.cshtml.cs):

Cuando se ejecuta la aplicaciГіn, el mГ©todo OnGet devuelve una cadena que muestra los valores de clase de subopciones: When the app is run, the OnGet method returns a string showing the suboption class values:

Opciones proporcionadas por un modelo de vista o con inserciГіn de vista directa Options provided by a view model or with direct view injection

Las opciones proporcionadas por un modelo de vista o de inserciГіn de vista directa se muestran en el ejemplo 4 en la aplicaciГіn de ejemplo. Options provided by a view model or with direct view injection is demonstrated as Example 4 in the sample app.

Las opciones se pueden suministrar en un modelo de vista o insertando IOptionsMonitor directamente en una vista (Pages/Index.cshtml.cs): Options can be supplied in a view model or by injecting IOptionsMonitor directly into a view (Pages/Index.cshtml.cs):

La aplicaciГіn de ejemplo muestra cГіmo insertar IOptionsMonitor con una directiva @inject : The sample app shows how to inject IOptionsMonitor with an @inject directive:

Cuando se ejecuta la aplicaciГіn, se muestran los valores de opciones en la pГЎgina representada: When the app is run, the options values are shown in the rendered page:

Volver a cargar los datos de configuraciГіn con IOptionsSnapshot Reload configuration data with IOptionsSnapshot

El procedimiento de volver a cargar los datos de configuraciГіn con IOptionsSnapshot se muestra en el ejemplo 5 en la aplicaciГіn de ejemplo. Reloading configuration data with IOptionsSnapshot is demonstrated in Example 5 in the sample app.

IOptionsSnapshot admite volver a cargar opciones con la mГ­nima sobrecarga de procesamiento. IOptionsSnapshot supports reloading options with minimal processing overhead.

Cuando se accede a las opciones y se las almacena en cachГ© durante la vigencia de la solicitud, se calculan una vez por solicitud. Options are computed once per request when accessed and cached for the lifetime of the request.

En el ejemplo siguiente se muestra cГіmo se crea un nuevo IOptionsSnapshot despuГ©s de cambiar el archivo appSettings.json (Pages/Index.cshtml.cs). The following example demonstrates how a new IOptionsSnapshot is created after appsettings.json changes (Pages/Index.cshtml.cs). Varias solicitudes al servidor devuelven valores constantes proporcionados por el archivo appSettings.json hasta que se modifique el archivo y vuelva a cargarse la configuraciГіn. Multiple requests to the server return constant values provided by the appsettings.json file until the file is changed and configuration reloads.

En la siguiente imagen se muestran los valores option1 y option2 iniciales cargados desde el archivo appSettings.json: The following image shows the initial option1 and option2 values loaded from the appsettings.json file:

Cambie los valores del archivo appSettings.json a value1_from_json UPDATED y 200 . Change the values in the appsettings.json file to value1_from_json UPDATED and 200 . Guarde el archivo appSettings.json. Save the appsettings.json file. Actualice el explorador para ver quГ© valores de opciones se han actualizado: Refresh the browser to see that the options values are updated:

Compatibilidad de opciones con nombre con IConfigureNamedOptions Named options support with IConfigureNamedOptions

La compatibilidad de opciones con nombre con IConfigureNamedOptions se muestra en el ejemplo 6 de la aplicaciГіn de ejemplo. Named options support with IConfigureNamedOptions is demonstrated as Example 6 in the sample app.

La compatibilidad con las opciones con nombre permite a la aplicaciГіn distinguir entre las configuraciones de opciones con nombre. Named options support allows the app to distinguish between named options configurations. En la aplicaciГіn de ejemplo, las opciones con nombre se declaran con OptionsServiceCollectionExtensions.Configure, que llama al mГ©todo de extensiГіn ConfigureNamedOptions .Configure. In the sample app, named options are declared with OptionsServiceCollectionExtensions.Configure, which calls the ConfigureNamedOptions .Configure extension method. Las opciones con nombre distinguen mayГєsculas de minГєsculas. Named options are case sensitive.

La aplicaciГіn de ejemplo accede a las opciones con nombre con Get (Pages/Index.cshtml.cs): The sample app accesses the named options with Get (Pages/Index.cshtml.cs):

Al ejecutar la aplicaciГіn de ejemplo, se devuelven las opciones con nombre: Running the sample app, the named options are returned:

Se proporcionan valores de named_options_1 a partir de la configuraciГіn, que se cargan desde el archivo appSettings.json. named_options_1 values are provided from configuration, which are loaded from the appsettings.json file. Los valores de named_options_2 los proporciona: named_options_2 values are provided by:

  • El delegado named_options_2 en ConfigureServices para Option1 . The named_options_2 delegate in ConfigureServices for Option1 .
  • El valor predeterminado para Option2 proporcionado por la clase MyOptions . The default value for Option2 provided by the MyOptions class.

Configurar todas las opciones con el mГ©todo ConfigureAll Configure all options with the ConfigureAll method

Configure todas las instancias de opciones con el mГ©todo ConfigureAll. Configure all options instances with the ConfigureAll method. El siguiente cГіdigo configura Option1 para todas las instancias de configuraciГіn con un valor comГєn. The following code configures Option1 for all configuration instances with a common value. Agregue manualmente este cГіdigo al mГ©todo Startup.ConfigureServices : Add the following code manually to the Startup.ConfigureServices method:

Al ejecutar la aplicaciГіn de ejemplo despuГ©s de agregar el cГіdigo se produce el siguiente resultado: Running the sample app after adding the code produces the following result:

Todas las opciones son instancias con nombre. All options are named instances. Las instancias de IConfigureOptions existentes se usan para seleccionar como destino la instancia de Options.DefaultName , que es string.Empty . Existing IConfigureOptions instances are treated as targeting the Options.DefaultName instance, which is string.Empty . IConfigureNamedOptions tambiГ©n implementa IConfigureOptions . IConfigureNamedOptions also implements IConfigureOptions . La implementaciГіn predeterminada de IOptionsFactory tiene lГіgica para usar cada una de forma adecuada. The default implementation of the IOptionsFactory has logic to use each appropriately. La opciГіn con nombre null se usa para seleccionar como destino todas las instancias con nombre, en lugar de una instancia con nombre determinada (ConfigureAll y PostConfigureAll usan esta convenciГіn). The null named option is used to target all of the named instances instead of a specific named instance (ConfigureAll and PostConfigureAll use this convention).

API OptionsBuilder OptionsBuilder API

OptionsBuilder se usa para configurar instancias TOptions . OptionsBuilder is used to configure TOptions instances. OptionsBuilder simplifica la creaciГіn de opciones con nombre, ya que es un Гєnico parГЎmetro para la llamada AddOptions (string optionsName) inicial en lugar de aparecer en todas las llamadas posteriores. OptionsBuilder streamlines creating named options as it’s only a single parameter to the initial AddOptions (string optionsName) call instead of appearing in all of the subsequent calls. La validaciГіn de opciones y las sobrecargas ConfigureOptions que aceptan las dependencias de servicio solo estГЎn disponibles mediante OptionsBuilder . Options validation and the ConfigureOptions overloads that accept service dependencies are only available via OptionsBuilder .

Uso de servicios de DI para configurar opciones Use DI services to configure options

Hay dos formas de acceder a otros servicios desde la inserciГіn de dependencias durante la configuraciГіn de opciones: You can access other services from dependency injection while configuring options in two ways:

Si se pasa un delegado de configuraciГіn a Configure en OptionsBuilder . Pass a configuration delegate to Configure on OptionsBuilder . OptionsBuilder proporciona sobrecargas de Configure que permiten usar hasta cinco servicios para configurar las opciones: OptionsBuilder provides overloads of Configure that allow you to use up to five services to configure options:

Si se crea un tipo propio que implementa IConfigureOptions o IConfigureNamedOptions , y se registrar como un servicio. Create your own type that implements IConfigureOptions or IConfigureNamedOptions and register the type as a service.

Se recomienda pasar un delegado de configuraciГіn a Configure, ya que la creaciГіn de un servicio es mГЎs complicada. We recommend passing a configuration delegate to Configure, since creating a service is more complex. La creaciГіn de un tipo propio es equivalente a lo que el marco hace de forma automГЎtica cuando se usa Configure. Creating your own type is equivalent to what the framework does for you when you use Configure. La llamada a Configure registra una interfaz IConfigureNamedOptions genГ©rica y transitoria, con un constructor que acepta los tipos de servicio genГ©ricos especificados. Calling Configure registers a transient generic IConfigureNamedOptions , which has a constructor that accepts the generic service types specified.

ConfiguraciГіn posterior de las opciones Options post-configuration

Establezca la configuraciГіn posterior con IPostConfigureOptions . Set post-configuration with IPostConfigureOptions . La configuraciГіn posterior se ejecuta una vez completada toda la configuraciГіn de IConfigureOptions : Post-configuration runs after all IConfigureOptions configuration occurs:

PostConfigure estГЎ disponible para configurar posteriormente las opciones con nombre: PostConfigure is available to post-configure named options:

Use PostConfigureAll para configurar posteriormente todas las instancias de configuraciГіn: Use PostConfigureAll to post-configure all configuration instances:

Los mejores corredores de opciones binarias 2020:
  • Binarium
    Binarium

    1er lugar! El mejor broker de opciones binarias!
    Ideal para principiantes! Entrenamiento gratis! Bonos de registro!

  • FinMax
    FinMax

    2do lugar! Gran corredor!

Like this post? Please share to your friends:
Opciones binarias: ¿por dónde empezar?
Deja un comentario

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: