附测试代码。
要求:不修改接口和两个类的内容,实现在Main中对MyClass1的实例调用MyClass中的a方法。反射也可
using System;
namespace ConsoleApplication1
{
interface IInterface
{
void a();
}
class MyClass : IInterface
{
void IInterface.a()
{
Console.WriteLine("base class"); //对于一个MyClass1实例,如何调用这个方法??
}
}
class MyClass1 : MyClass, IInterface
{
void IInterface.a()
{
Console.WriteLine("inherit class");
}
}
class Program
{
static void Main(string[] args)
{
IInterface i = new MyClass1();
i.a();
}
}
}
要求:不修改接口和两个类的内容,实现在Main中对MyClass1的实例调用MyClass中的a方法。反射也可
using System;
namespace ConsoleApplication1
{
interface IInterface
{
void a();
}
class MyClass : IInterface
{
void IInterface.a()
{
Console.WriteLine("base class"); //对于一个MyClass1实例,如何调用这个方法??
}
}
class MyClass1 : MyClass, IInterface
{
void IInterface.a()
{
Console.WriteLine("inherit class");
}
}
class Program
{
static void Main(string[] args)
{
IInterface i = new MyClass1();
i.a();
}
}
}
解决方案 »
- WPF datagrid 中datagridcomboboxcolumn的数据绑定与datagrid数据绑定的匹配
- C#网页提取问题!请问各位老师
- winform 窗体闪烁
- 请问如何根据类名创建类实例
- 主管交给我一个算法问题,我想了很久也搞不定,求解!
- 请问为什么vb的函数val(&Hbcde)的值是-17186 而不是48350,同时请问C#中有什么函数可以实现这个功能
- 请教一个datagrid的问题,谢谢
- 【菜鸟提问】如何让按回车让焦点在各个text框中切换(象TAB键一样)?
- 关于listbox是否选中的问题 急急在线等
- 请教:文件更新(急!!)
- C#2008如何调用python
- 自定义异常类的问题
namespace ConsoleApplication1
{
interface IInterface
{
void a();
}
class MyClass : IInterface
{
public void a()
{
Console.WriteLine("base class"); //对于一个MyClass1实例,如何调用这个方法??
} }
class MyClass1 : MyClass, IInterface
{
virtual public void a()
{
Console.WriteLine("inherit class");
}
}
class Program
{
static void Main(string[] args)
{
MyClass i = new MyClass1();
i.a(); IInterface i2 = new MyClass1();
i2.a(); }
}
}
http://www.winu.cn/space-14160-do-blog-id-24202.html
interface IInterface
{
void a();
}
class MyClass : IInterface
{
void IInterface.a()
{
Console.WriteLine("base class");
}
}
class MyClass1 : MyClass
{
public void a()
{
Console.WriteLine("inherit class");
}
}MyClass1 myClass = new MyClass1();
myClass.a();IInterface myInterface = new MyClass1();
myInterface.a();
interface IInterface
{
void a();
}
class MyClass : IInterface
{
public void a()
{
Console.WriteLine("base class");
}
}
class MyClass1 : MyClass,IInterface
{
void IInterface.a()
{
Console.WriteLine("inherit class");
}
}
若批评不自由则赞美无意义
---------------------
我想,你没明白我的意思,更没明白楼主的意思。
现在讨论的是他的这种情况,而不是在优化代码,显然你这样写很合理,但楼主的问题是想搞明白显式实现接口的意义。
我发的帖子都是测试过的,所以我也习惯性测试了你的例子,也是正确的。
但是,我们要从楼主的问题出发,毕竟需求才是开发的终点。IInterface i = new MyClass1();
i.a();看到他2句了么,i是什么,是接口IInterface的引用,指向MyClass1的对象,那我尝试这样做,没错吧
MyClass1 i = new MyClass1();
i.a();
效果应该一样吧,但编译不通过。class MyClass : IInterface
{
public void IInterface.a()
{
Console.WriteLine("base class"); //对于一个MyClass1实例,如何调用这个方法??
}
}
于是这样修改,发现无法编译通过。所以我搜索得到那个结论,那么你说那个博客写的不对,请指正一下错误原因吧,洗耳恭听 ^_^
class MyClass : IInterface
{
public void IInterface.a()
{
Console.WriteLine("base class"); //对于一个MyClass1实例,如何调用这个方法??
}
}无法编译通过哦。
static void Main(string[] args)
{
IInterface i = new MyClass1();
i.a(); i.GetType().GetInterface("IInterface").GetMethod("a").Invoke(Activator.CreateInstance(iif.GetType
().BaseType), null);
}ps: 虽然可以实现,但这不是一个好的方案