C# 如何在接口定义的接口中使用参数

C# 如何在接口定义的接口中使用参数,c#,C#,我尝试定义这样的接口: public interface Something { void f(); } public interface SomethingElse { void g(Something s); } 这应该是说,g接受一个参数,该参数附着于接口“Something”。当我尝试创建类时,编译器将拒绝SomethingElse类,因为它与接口定义的签名不匹配。但是我应该如何定义接口呢 class Something_class : Something { pub

我尝试定义这样的接口:

public interface Something
{
   void f();
}
public interface SomethingElse
{
   void g(Something s);
}
这应该是说,g接受一个参数,该参数附着于接口“Something”。当我尝试创建类时,编译器将拒绝SomethingElse类,因为它与接口定义的签名不匹配。但是我应该如何定义接口呢

class Something_class : Something
{
   public void f() { Console.WriteLine("Something.f"); }
}
class SomethingElse_class : SomethingElse
{
   public void g(Something_class s) { Console.WriteLine("SomethingElse.g"); }
}

您的
SomethingElse
接口指出,任何实现都需要接受实现
Something
的任何类型,而不仅仅是一个特定示例

您需要将
SomethingElse\u class
更改为:

class SomethingElse_class : SomethingElse
{
   public void g(Something s) { Console.WriteLine("SomethingElse.g"); }
}
。。。或者使
某些东西成为通用的,例如

public interface SomethingElse<T> where T : Something
{
   void g(T s);
}
在SomethingElse_类中使用void g(somethines s)。
class SomethingElse_class : SomethingElse<Something_class>
{
   public void g(Something_class s) { ... }
}
       class SomethingElse_class : SomethingElse
        {
            public void g(Something_class s)
            {
                Console.WriteLine("SomethingElse.g");
            }
            public void g(Something s) //overload g with the (Something s)
            {
                Console.WriteLine("Something.g");
            }
        }