是否有一个术语可以互换地描述C#中的接口或抽象类?

时间:2013-03-27 13:20:33

标签: c# .net terminology

描述可能是接口或抽象类型但不是具体类型的类型的正确术语是什么?

这个问题是由于将StructureMap连接为MVC4的IDependencyResolver而产生的。我正在做一些重构并创建了这个:

public object GetService(Type serviceType)
{
  if (serviceType.IsAbstract || serviceType.IsInterface)
  {
    return GetNonConcreteService(serviceType);
  }

  return GetConcreteService(serviceType);
}

private object GetConcreteService(Type serviceType)
{
  return _container.GetInstance(serviceType);
}

private object GetNonConcreteService(Type serviceType)
{
  return _container.TryGetInstance(serviceType);
}

显然GetNonConcreteService是一个糟糕的方法名称,这让我想知道是否会有一个同样准确但更好的术语。

4 个答案:

答案 0 :(得分:3)

要回答您的代码示例,他们都在Abstraction中调用了.net。为了证明这一点:

Type type = typeof(IEnumerable); //interface    
Console.WriteLine (type.IsAbstract); //prints true

答案 1 :(得分:1)

也许你可以把它们称为“抽象”。接口定义了一组方法/属性/事件,如果实现接口,则必须定义这些方法/属性/事件。抽象类可以实现功能,但也可以定义抽象方法,如果从抽象类继承,则必须实现类似于Interfaces的抽象方法。不同之处在于抽象类可以提供一些功能。

答案 2 :(得分:0)

也许抽象是最好的,但是......

我认为你应该区分接口和抽象类。接口为您提供功能定义(无实现),而抽象类可以部分实现,因此与普通类没有太大区别(除非您无法实例化它)。

在旁注中,您可能需要阅读this。此界面在某些情况下存在问题。

答案 3 :(得分:-1)

在C#术语中,它们都是基本类型。实际上没有一个特定的术语描述两者。

至于您的其他问题 - 我会将您的代码函数GetServiceImplementation称为GetNonConcreteService而不是{{1}}。