C# .net标准中缺少接口
我正在尝试将端口a类实现到我的.net标准2.1库中。该类实现了C# .net标准中缺少接口,c#,wpf,data-binding,.net-core-3.0,.net-standard-2.1,C#,Wpf,Data Binding,.net Core 3.0,.net Standard 2.1,我正在尝试将端口a类实现到我的.net标准2.1库中。该类实现了ICustomTypeProvider,以便WPF可以绑定到一些动态属性。该接口在.net标准中不可用。我理解为什么没有这个界面,但它是一个简单的界面,我可以自己重新创建。我的问题是:如果我在.net标准库中重新创建了这个接口,那么当我在WPF库中使用该类时,是否有一种方法可以将其识别为预定义的ICustomTypeProvider,而无需在其周围创建包装类?如果我需要走包装路线,这很酷,我只是想知道我是否错过了一个更干净的方法来实
ICustomTypeProvider
,以便WPF可以绑定到一些动态属性。该接口在.net标准中不可用。我理解为什么没有这个界面,但它是一个简单的界面,我可以自己重新创建。我的问题是:如果我在.net标准库中重新创建了这个接口,那么当我在WPF库中使用该类时,是否有一种方法可以将其识别为预定义的ICustomTypeProvider
,而无需在其周围创建包装类?如果我需要走包装路线,这很酷,我只是想知道我是否错过了一个更干净的方法来实现这一点,但我没有找到任何东西。感谢您的帮助。您可以自己重新创建接口,但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>
在这种情况下,在非netcoreapp3.0目标上,接口将不存在。如果需要,可以这样添加并删除前面的#If行:
#if !NETCOREAPP3_0
namespace System.Reflection
{
public interface ICustomTypeProvider
{
Type GetCustomType ();
}
}
#endif
有关预处理器符号列表,请参见,此接口在net core 3中提供。您应该将其作为目标,而不是netstandard。如果您在内部重新创建接口,wpf框架将不会使用它。我理解这一点,但该类将被其他.net标准库使用。它需要采用.net标准。我很确定我只需要在我的.net核心库中创建一个包装器。这将是一个相对容易的过程。我只是希望有一些设计模式可以简化这一点,这样我就不必承诺在类中维护包装器。你也可以在netcore和net standard之间实现多目标,并且只在netcore中实现
ICustomTypeProvider
(使用#如果xxx
)啊,是的,我没有想到这一点。这可能是更好的选择。谢谢。对否决票的解释会很好。这与我实现解决方案的方式非常相似,而且效果很好。非常感谢。
#if !NETCOREAPP3_0
namespace System.Reflection
{
public interface ICustomTypeProvider
{
Type GetCustomType ();
}
}
#endif