只是一个警告,这个问题需要安装 .NET 6 的预览版
我正在尝试在 C# 中创建一个接口,该接口可以允许+
运算符类似于它在 Microsoft 的INumber<T>
.
接口.cs
using System;
using System.Runtime.Versioning;
namespace InterfaceTest;
[RequiresPreviewFeatures]
public interface IExtendedArray<T> : IAdditionOperators<IExtendedArray<T>, IExtendedArray<T>, IExtendedArray<T>>
where T : INumber<T>
{
Array Data { get; }
}
[RequiresPreviewFeatures]
public interface IExtendedFloatingPointArray<T> : IExtendedArray<T>
where T : IFloatingPoint<T>
{
}
接口测试.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<EnablePreviewFeatures>true</EnablePreviewFeatures>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>false</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="System.Runtime.Experimental" Version="6.0.0-preview.7.21377.19" />
</ItemGroup>
</Project>
但是,此代码产生
错误 CS8920:接口“InterfaceTest.IExtendedArray”不能用作泛型类型或方法“IAdditionOperators<TSelf, TOther, TResult>”中的类型参数“TSelf”。约束接口 'System.IAdditionOperators<InterfaceTest.IExtendedArray, InterfaceTest.IExtendedArray, InterfaceTest.IExtendedArray>' 或其基接口具有静态抽象成员。
有没有办法通过自定义类型实现这一点?
dotnet --list-sdks
显示我已6.0.100-rc.1.21458.32
安装。但我只是通过 Visual Studio 2022 Preview 4 安装了它。