怎模样在aspx文件中实现接口的多重继承呢?Inherit经过试验是行不通的,请大家帮忙!
解决方案 »
- 关于注册控件CreateUserWizard的问题
- 请问谁有chinapay银联支付的接口
- 为空值怎么变成 了???
- 中文帐号在IE6下不能登录,IE7和FF下能登录,怎么办啊???
- (高分请教)如何在global.asax文件中设置来统计访问量和统计在线人数呀?(在线等待)
- asp.net 设置问题
- 怎样在表格的一个单元格中让文字可以从左边动态移动到右边?
- 各位高手看一下:怪事!aspx文件生成了很规范的htm文件,但在ie显示的却是按xml格式(把html当成根节点)。
- 图片上传压缩后,有的很清晰有的很模糊,为什么?
- 在线,急呀!!Server Error in '/' Application.这是一个什么错误呀?
- URL地址不变的跳转
- 求助,请大家帮帮我,我想用鼠标选中TEXTBOX中的字符,然后取对选中字符的操作的代码,请不吝指教,谢谢,C#代码
关注!
现在有一个比较钻牛角尖的问题,如何在派生的类里面实现这两个接口的相同名称的方法呢? 通过试验,翻阅MSDN,我总结了这么几条规律:
本文可参考 MSDN 配合理解 1。要么只实现一个方法,否则函数重明,就会存在二义性
2。如果确实想两个方法都实现,必须在接口的实现部分注意这么几点:
(1)。对有相同名称的方法在实现时,前面不能加public等关键词。每个方法前必须冠以相应的接口名。 比如:void IFace1.Print(){......};
void IFace2.Print(){......};
(2)。对于不通名称的方法,事项是前面必须冠以"public"标识符。
以上两个规则缺一不可,否则会收到编译错误。
3。创建类实例时,如何饮用不通接口的相同方法呢?方法如下:
1。如果调用那个接口的实现,则必须将示例强制转换为相应接口类型。
比如:
FacetoFace face;
((IFace1)face).Print();或者
((IFace2)face).Print();完整的例子见下面using System;namespace TestInterface
{
/// <summary>
/// Class1 的摘要说明。
/// 本代码演示了C#中接口的基本特征,并检验了作者心中迷惑但是书中没有详细讲解的地方,比如接口多重
/// 继承时,多个父类接口有相同的方法时,派生接口如何定义、使用的问题
/// </summary>
interface IFace1
{
void Print();
void Hello();
}
interface IFace2
{
void Print();
void Goodbye();
}
class FacetoFace : IFace1,IFace2
{
#region IFace1 成员 void IFace1.Print()
{
Console.WriteLine("这是IFace1的Print函数");
} public void Hello()
{
// TODO: 添加 FacetoFace.Hello 实现
Console.WriteLine("IFace1向您说Hello!");
} #endregion #region IFace2 成员
public void Goodbye()
{
// TODO: 添加 FacetoFace.Goodbye 实现
Console.WriteLine("IFace2向您说GoodBye");
}
void IFace2.Print()
{
Console.WriteLine("这是IFace2的Print函数");
} #endregion
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
FacetoFace facetest1=new FacetoFace();
((IFace1)facetest1).Print();
((IFace2)facetest1).Print();
facetest1.Hello();
facetest1.Goodbye();
//
}
}
}