簡體   English   中英

c#接口方法必須具有從其自身派生的返回類型

[英]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;
}

具體來說,如何在類型接口NormalNormalObject返回基本INormalizedObject類型的對象的接口上施加類型約束?

如果要讓T表示“實現此接口的類型”,則可以使該接口通用:

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);
}

因為這就是您的代碼應該知道的全部。

我認為您不能在此處使用this,因為這將要求您的方法是靜態的。 你可以試試這個嗎

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM