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