c# 接口方法必须具有从自身派生的 return 类型

c# Interface method must have return type that derives from itself

我正在寻找一种有效的方法来执行类似此伪代码的操作。

public interface INormalizedObject{
    void someMethodThatHappensToNormalizedObjects();
    T NormalizeObject(T obj) where T : derives from INormalizedObject;
}

具体来说,如何在 NormalizeObject 方法 returns 基 INormalizedObject 类型的对象的接口上设置类型约束?

如果您希望 T 表示 "the type that implements this interface",您可以使接口通用:

public interface INormalizedObject<T> 
   where T : INormalizedObject<T>
{
    T NormalizeObject(T obj);
}

然后实施:

public class Foo : INormalizedObject<Foo>
{
    public Foo NormalizeObject(Foo obj)
    {
    }
}

但是你实际上似乎要求的只是这个:

public interface INormalizedObject
{
    INormalizedObject NormalizeObject(INormalizedObject obj);
}

因为这就是您的代码应该知道的全部内容。

我认为你不能在这里使用这个词,因为它要求你的方法是静态的。 你能试试这个吗

    public interface INormalizedObject
    {
     void someMethodThatHappensToNormalizedObjects();
     T NormalizeObject<T>(T obj) where T : INormalizedObject;
    }