.net 标准中缺少接口



>我正在尝试将类移植到我的.net标准2.1库。 该类实现ICustomTypeProvider以便 WPF 可以绑定到某些动态属性。 该接口在 .net 标准中不可用。 我理解为什么这个界面不存在,但它是一个可以自己重新创建的简单界面。 我的问题是:如果我确实在我的 .net 标准库中重新创建了这个接口,那么当我在 WPF 库中使用该类时,是否有一种方法可以将其识别为预定义的ICustomTypeProvider,而无需围绕它创建包装类? 如果我需要走很酷的包装器路线,我只是想知道我是否缺少一种更干净的方法来实现它,但我什么也没找到。 感谢您的任何见解。

您可以自己重新创建接口,但 WPF 框架不会使用它。

但是,此接口在网络核心 3 中可用。你可以定位它而不是网络标准。如果你需要生成一个网络标准版本,我建议你在netcore和net standard之间使用多目标,并且只在netcore中实现ICustomTypeProvider(使用 #IF xxx(。见下文 :

Project.csproj

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0</TargetFrameworks>
</PropertyGroup>
</Project>

类1.cs

using System;
namespace lib
{
public class Class1
#if NETCOREAPP3_0
: System.Reflection.ICustomTypeProvider
#endif
{
public Type GetCustomType()
{
#if !NETCOREAPP3_0
throw new NotSupportedException();
#else
return this.GetType(); // return your impl
#endif
}
}
}

在这种情况下,在非 netcoreapp3.0 目标上,接口将不存在。如果需要,可以像这样添加它并删除以前的 #if 行:

#if !NETCOREAPP3_0
namespace System.Reflection
{
public interface ICustomTypeProvider
{
Type GetCustomType ();
}
}
#endif

有关预处理器符号的列表,请参阅 https://learn.microsoft.com/en-us/dotnet/standard/frameworks

相关内容

  • 没有找到相关文章

最新更新