gpt4 book ai didi

c# - 接口(interface)参数

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:32 25 4
gpt4 key购买 nike

我对如何实现这个有点困惑。

我定义了一个名为 IActivity 的接口(interface),其中包含一些 int 属性。

然后我创建了两个实现这个接口(interface)的类并添加了一些额外的属性

EngagementActivity 和 MPEngagementActivity。需要明确的是,这两个类实现了 IActivity 并声明了一些额外的属性

然后我有一个名为 ActivitySvc 的基类,它将为两种类型的事件共有的所有功能实现虚拟方法。

然后我实现了两个从基类派生的类,并且必须提供它们自己的在基类中声明的 SaveActivity 方法的实现:

public abstract void SaveActivity(IActivity activity);

我的问题是我在实现 SaveActivity 方法时出错,因为我的事件对象是 IActivity 类型,因此它没有特定于 EngagementActivity 和 MPEngagementActivity 类的成员。

我做错了什么?

提前致谢。

最佳答案

虽然它不一定是最好/最正确的方法,但最快的方法是尝试将您的事件对象安全地转换为相关方法中的正确类型。

例如,在使用 EngagementActivity 的类中,您可以这样做:

public override void SaveActivity(IActivity activity)
{
var engagementActivity = activity as EngagementActivity;
if (engagementActivity != null) // it's the correct type
{
// Do whatever's needed here
}
}

如果 engagementActivity 变量为 null,则它不是您要将其转换为的类型。参见 this MSDN article有关“as”的更多信息。

关于c# - 接口(interface)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26102704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com