c# - 伪多重继承

标签 c# inheritance interface

我有一系列对象,这些对象已使用 LINQ to SQL 映射到数据库中。这些表是高度规范化的。我要抽象我的问题。我在数据库中实现了五个中央实体。然后我有一系列其他对象,我想实现这五个实体中的一个或全部。

假设我正在实现一种体育场类(想想运动队)。这五个实体就是五大运动;棒球,篮球,足球,曲棍球,足球。我想为每个体育场显式实现一个类。

这是一个例子,洋基体育场举办过棒球、曲棍球和橄榄球比赛。我希望它实现这 3 个接口(interface)中的每一个。 StadiumBaseClass 是与我的数据库接口(interface)的抽象基类。 StadiumBaseClass 实现了所有 5 个主要的运动接口(interface)。我不想在所有可能的体育场中使用相同的代码来实现 IBaseball 接口(interface),我希望它在 StadiumBaseClass 中实现一次。

在这个例子中,我只想实现 3,这是最好的方法吗?有点单调,但又不完全是?

class YankeeStadium : IBaseball, IHockey, IFootball
{
    StadiumBaseClass _Stadium {get; set;}

   // IBaseball
   public IBaseball.Whatever {get { return _Stadium.Baseball;} }

   // IFootball
   public IFootball.Whatever {get { return _Stadium.Hockey;} }

  // IHockey
   public IHockey.Whatever {get { return _Stadium.Hockey;} }
}  

最佳答案

我认为您根本不应该使用继承。你应该有一个带有 name 属性的 Stadium 类,而不是 YankeeStadium 类。

同样,您应该拥有诸如 HasHockey 之类的属性,或者如果 Hockey 属性不适用,则只需返回 null。

关于c# - 伪多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8752063/

相关文章:

c# - 接口(interface)不能被实例化,但这是一个异常吗

C# .exe 将多个文件上传到 PHP 服务器 - 文件名参数?

c# - 了解抽象类的子类型

c# - 将密码保存到注册表时加密密码的最简单方法是什么?

ruby-on-rails - 单表继承和 ActiveRecord 关联

interface - TypeScript:跨文件合并接口(interface)

c# - WPF 文本框和空格

java - 一个接口(interface)可以在Java中扩展多个接口(interface)吗?

java - 错误: Constructor Room in class Room cannot be applied to given types

go - slice of slice 中的接口(interface)转换