在C#中获取对象的价值意味着什么?

时间:2017-01-10 22:00:34

标签: c#

来自,https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration

这里的构造是什么,

subOptionsAccessor.Value;

Value在这里意味着什么?什么是传递?

public class HomeController : Controller
{
    private readonly MySubOptions _subOptionsAccessor;

    public HomeController(IOptions<MySubOptions> subOptionsAccessor)
    {
        _subOptionsAccessor = subOptionsAccessor.Value;
    }

    public IActionResult Index()
    {
        var subOption1 = _subOptionsAccessor.SubOption1;
        var subOption2 = _subOptionsAccessor.SubOption2;
        return Content($"subOption1 = {subOption1}, subOption2 = {subOption2}");
    }
}

修改:https://docs.microsoft.com/en-us/aspnet/core/api/microsoft.extensions.options.ioptions-1#Microsoft_Extensions_Options_IOptions_1

我是否更正了IOptions类型只是意味着,在这种情况下,构造函数将接收一种IOptions,并且此上下文中的Value表示它包含的列表项之一。这就是“MyClass”。 Value表示构造函数(类型为IOptions)中发送的列表中的对象。

1 个答案:

答案 0 :(得分:3)

  

价值在这里意味着什么?

它是IOptions<TOptions>接口的属性,根据the documentation,返回“已配置的TOptions实例”。

  

传递的内容是什么?

无。 返回一个值 - 没有字段或属性getter的输入。

您似乎认为Value是C#中的某些“特殊”关键字或属性,但实际情况并非如此。它只是该类型的正常属性 - 它返回的是它被编程返回的任何东西。

例如,Nullable<T>类型用于将值类型(例如intdouble)包装在可能为null的引用类型中。 类型具有返回基础值的Value属性。但它已经编程来做到这一点 - 它没有什么神奇之处适用于其他类型。