2
假設我們有2個接口:IOne
和ITwo
,我想定義一個函數,它接受任何類型的參數,它們同時實現了這兩個接口。怎麼樣?如何在C#中定義變量定義中的接口?
假設我們有2個接口:IOne
和ITwo
,我想定義一個函數,它接受任何類型的參數,它們同時實現了這兩個接口。怎麼樣?如何在C#中定義變量定義中的接口?
您可以添加一個接口,既ITwo
並從中IOne
繼承。
public void SomeFunction(INumber argument)
{
}
public interface INumber
{
}
public interface ITwo : INumber
{
}
public interface IOne : INumber
{
}
或使用通用:
public void SomeFunction<T>(T argument) where T : IOne, ITwo
{
}
你可以這樣說:
interface IOne {void Hello();}
interface ITwo {void World();}
static void Foo<T>(T arg) where T : IOne, ITwo {
arg.Hello();
arg.World();
}
你的第一個解決方案並不能保證'argument'實現在同一時間兩個接口。實際上,它可能不會實現其中之一!您的第二個解決方案很好,但:-) – dasblinkenlight