【发布时间】:2021-08-27 05:48:11
【问题描述】:
我的目标(这样我就不会遇到 x-y 问题):
我正在尝试创建一个与T 泛型类型一起使用的Filter 类。由于过滤器可以进行矢量操作,因此我想将对象转换为Vector<double>,进行过滤,然后在请求数据后将其转换回T。
接口不能有静态方法
我制作了一个应该看起来像这样的界面。
public interface IFilterable {
public Vector<double> ToVector();
public static IFilterable FromVector(Vector<double> vec);
}
这样我就可以在Filter 中使用它:
public class Filter<T> where T: IFilterable {
private Vector<double> _state;
public T GetState() {
return T.FromVector();
}
接口不能有静态方法,所以我正在寻找一种替代方法,它可以提供这种行为,它仍然允许我使用 T 作为泛型类型。
【问题讨论】:
-
一个抽象类允许你定义静态方法而不需要实现
-
@404 好主意,但仅在可过滤导数尚未扩展其他类时才有效。
-
IDE 告诉我“非抽象和非外部方法必须声明一个主体”,所以我现在添加了一个
throw new NotImplementedException()。 -
@muszeo 我认为“IFilterable”的全部目的是让一个类型实现在过滤器中使用所需的功能。在您想要类型本身的过滤器之外。
标签: c# .net generics interface static