特定接口的调用函数时的接口实现问题

时间:2013-12-02 16:02:14

标签: c#-2.0

如何通过 I3 界面访问 I1 I2 接口方法。我想在TestIt类中实现I3(公共类TestIt:I3 )。不想实现I1和I2(公共类TestIt:I1,I2 )。

我的代码如下......

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for TestIt
/// </summary>
public class TestIt:I3
{
    public TestIt()
    {
        //
        // TODO: Add constructor logic here
        //
        //TestItB tb = new TestItB();
    }

    public int abc()
    {
        return 10;
    }

    int I1.A1()
    {
        return 20;
    }

    void I2.A1()
    {
        int j = 0;
    }
}

public interface I1
{
   int A1();
}

public interface I2
{
    void A1();
}

public interface I3 : I1, I2
{

}

我尝试按下面的方法调用A1方法......

I3 t = new TestIt();
int i = t.A1();

以上是抛出错误...

我不想创建对象... ...

I1 t = new TestIT(); 
   or 
I2 t = new TestIT();

1 个答案:

答案 0 :(得分:2)

将对象强制转换为适当的接口类型:

int i = ((I1)t).A1();

您也可以使用as运算符(t as I1).A1(),尽管IMO投射可以更明确地显示正在发生的事情。