【发布时间】:2015-10-09 13:35:18
【问题描述】:
class Program
{
interface I1
{
void F1();
}
interface I2
{
void F2();
} //2 interfaces
abstract class b1 : I1
{
abstract public void F1();
}
private class d1 : b1
{
public override void F1()
{
Console.Write("Inside D1:b1.F1");
//I want to call my method() here
MyMethod();
}
}
private class d2 : b1
{
public override void F1()
{
Console.Write("Inside d2:b1.F1");
//I want to call my method() here
MyMethod();
}
}
private class ImeplementI2_1 : I2
{
public void F2()
{
//Implementation
Console.Write("Inside b_1:b_1.F2");
//I want to call my method() here
MyMethod();
}
}
private class ImeplementI2_2 : I2
{
public void F2()
{
//Implementation
Console.Write("Inside b_1:b_1.F2");
//I want to call my method() here
MyMethod();
}
}
void MyMethod()
{
Console.WriteLine("Printmenow");
}
static void Main(string[] args)
{
I1 interface1;
if (args.Length > 0)
{
interface1 = new d1();
}
else
{
interface1 = new d2();
}
interface1.F1();
//I want to call my method() here
MyMethod();
}
}
哪里最好实现 MyMethod() ?我有 2 个接口具有不同的实现方法。所以我想了想,似乎我只能在那个类程序中使用静态方法来让每个人都开心。有什么建议或更好的解决方案吗?
【问题讨论】:
-
"我有 2 个接口的 smae 方法实现不同" 为什么?
-
听起来你需要一个抽象类。
-
你究竟为什么需要这个?请提供有关您的问题的更多详细信息,因为目前很难说什么
-
看来你只需要使用explicit implementation
标签: c# interface abstraction