gpt4 book ai didi

c# - MarkupExtension.ProvideValue——是否实际使用了 IServiceProvider?

转载 作者:太空狗 更新时间:2023-10-29 22:09:43 25 4
gpt4 key购买 nike

我在查看我的一些旧代码时发现了一个混合的 IValueConverter/MarkupExtension 类。这让我想知道 ProvideValue 方法中的 IServiceProvider 是否真的有用,以及它如何有用?

我看到 IServiceProvider 只有一种方法:GetService,必须将其转换为正确的服务类型。我还查看了 MarkupExtension.ProvideValue MSDN 页面,它列出了不同类型的服务。我想,我只是想知道这些服务是否有用,或者我应该保留我的方法吗?

当前方法:

public Object ProvideValue(IServiceProvider serviceProvider)
{
return new MyConverter();
}

基本上,我应该执行以下操作:

public Object ProvideValue(IServiceProvider serviceProvider)
{
var provider = serviceProvider as SomeType;

if (provider == null) return new MyConverter();

//Do something with the provider here?
}

最佳答案

例如,提供程序可用于获取有关目标对象和应用它的属性的信息。如果你不需要知道这些值那么你就不需要使用它

示例

public override object ProvideValue(IServiceProvider provider)
{
IProvideValueTarget service = (IProvideValueTarget)provider.GetService(typeof(IProvideValueTarget));
DependencyObject targetObject = service.TargetObject as DependencyObject;
DependencyProperty targetProperty = service.TargetProperty as DependencyProperty;

// ...
}

关于c# - MarkupExtension.ProvideValue——是否实际使用了 IServiceProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7423511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com