2013-04-18 13 views
-5
class Test { 
    public Test(string name, string age) { 
    } 
} 

interface ITest 
     ???????? 

class Example: ITest { 
    public Example(/* ... */) { 
    } 
} 

那么我应该在我的界面中使用我的示例中的相同参数和测试中的值?接口中的C#参数

我想做什么:

  • 我有3类:abc

  • 我想我的c继承ab

但是C#不会让你这样做...所以我想使用一个接口。

编辑 我的类别是:

  • 学生(姓名,年龄,研究)
  • 教师(姓名,年龄,班级)
  • 工作学生/教师(姓名,年龄,研究/ classes,payment)

所以我想从其他类的工作类中使用方法。

+1

您的问题*非常*不清楚。 –

回答

1

接口被用作继承它的类的契约。这意味着您希望接口公开的任何公共方法/属性也必须在继承类中公开。

在上面的例子中,您没有任何公开的方法/属性暴露在接口中。让我给你看一个例子。

Interface ITest 
{ 
    void AddPerson(string name, string age); 
} 

Interface IPerson 
{ 
    string ReturnPersonsAge(string name); 
} 

/// This must expose the AddPerson method 
/// This must also expose the ReturnPersonByAge method 
class Example : ITest, IPerson 
{ 
    Dictionary<string, string> people = new Dictionary<string, string>(); 

    void AddPerson(string name, string age) 
    { 
     people.Add(name, age); 
    } 

    string ReturnPersonsAge(string name) 
    { 
     return people[name]; 
    } 
} 

我希望有帮助,但随时提出更多问题,以便我可以帮助缩小您的问题。

+0

嘿,我想要做什么: 我有3个类 - > a,b和c我希望我的C从a和b继承。但是c#不会让你这么做......所以我想使用一个接口。 – user1765216

+0

我以为你不能从更多的1级继续? – user1765216

+0

对不起,不允许多重继承,但允许您从多个接口继承,这是略有不同的。请参阅编辑。 –

-1

您可以在界面

Interface ITest 
{ 
string Name{get;set;} 
string Age{get;set;} 
} 
+0

如果我使用公开测试(params string []参数) – user1765216

0

接口不能定义构造函数将它们公开为属性。还有其他方法可以做到这一点,取决于你想要达到的目标。

0
Interface IAClass 
{ 
    void Add(string s); 
} 
Interface IBClass 
{ 
    void Delete(string m); 
} 


Class A: IAClass 
{ 
    void Add(string name) 
{ 
    // Your Logic 
} 
} 

Class B: IBClass 
{ 
    void Delete(string name) 
{ 
    // Your Logic 
} 
} 

Class C:IAClass,IBClass 
{ 
    void Add(string name) 
{ 
    // Your Logic 
} 

void Delete(string name) 
{ 
    // Your Logic 
} 
}