.net 标准中缺少接口
Missing interface in .net standard
我正在尝试将端口 a class 实现到我的 .net 标准 2.1 库。 class 实现 ICustomTypeProvider
以便 WPF 可以绑定到某些动态属性。该接口在 .net 标准中不可用。我明白为什么没有这个界面,但它是一个我自己重新创建的简单界面。我的问题是:如果我确实在我的 .net 标准库中重新创建了这个接口,那么当我在我的 WPF 库中使用 class 时,是否有一种方法可以将其识别为预定义的 ICustomTypeProvider
不需要围绕它创建一个包装器 class?如果我需要走很酷的包装路线,我只是想知道我是否缺少一种更简洁的方法来实现它,但我没有找到任何东西。感谢您的任何见解。
您可以自己重新创建界面,但 WPF 框架不会使用它。
但是,此接口在 net core 3 中可用。您可以将其作为目标而不是 netstandard。如果您需要生成一个 netstandard 版本,我建议您在 netcore 和 net standard 之间使用多目标,并且只在 net core 中实现 ICustomTypeProvider(使用#IF xxx)。见下文:
Project.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0</TargetFrameworks>
</PropertyGroup>
</Project>
Class1.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://docs.microsoft.com/en-us/dotnet/standard/frameworks
我正在尝试将端口 a class 实现到我的 .net 标准 2.1 库。 class 实现 ICustomTypeProvider
以便 WPF 可以绑定到某些动态属性。该接口在 .net 标准中不可用。我明白为什么没有这个界面,但它是一个我自己重新创建的简单界面。我的问题是:如果我确实在我的 .net 标准库中重新创建了这个接口,那么当我在我的 WPF 库中使用 class 时,是否有一种方法可以将其识别为预定义的 ICustomTypeProvider
不需要围绕它创建一个包装器 class?如果我需要走很酷的包装路线,我只是想知道我是否缺少一种更简洁的方法来实现它,但我没有找到任何东西。感谢您的任何见解。
您可以自己重新创建界面,但 WPF 框架不会使用它。
但是,此接口在 net core 3 中可用。您可以将其作为目标而不是 netstandard。如果您需要生成一个 netstandard 版本,我建议您在 netcore 和 net standard 之间使用多目标,并且只在 net core 中实现 ICustomTypeProvider(使用#IF xxx)。见下文:
Project.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;netcoreapp3.0</TargetFrameworks>
</PropertyGroup>
</Project>
Class1.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://docs.microsoft.com/en-us/dotnet/standard/frameworks