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

Cha*_*sen 0 .net c# types .net-4.5

我正在寻找一种有效的方法来做这样的伪代码.

public interface INormalizedObject{
    void someMethodThatHappensToNormalizedObjects();
    T NormalizeObject(T obj) where T : derives from INormalizedObject;
}
Run Code Online (Sandbox Code Playgroud)

具体来说,如何在接口上放置一个类型约束,方法NormalizeObject返回一个类型为base INormalizedObject的对象?

Cod*_*ter 7

如果您想T表示"实现此接口的类型",您可以使接口通用:

public interface INormalizedObject<T> 
   where T : INormalizedObject<T>
{
    T NormalizeObject(T obj);
}
Run Code Online (Sandbox Code Playgroud)

然后实现它:

public class Foo : INormalizedObject<Foo>
{
    public Foo NormalizeObject(Foo obj)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

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

public interface INormalizedObject
{
    INormalizedObject NormalizeObject(INormalizedObject obj);
}
Run Code Online (Sandbox Code Playgroud)

因为这是你需要知道的所有代码.