4

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

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

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

4 回答 4

3

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

Type type = typeof(IEnumerable); //interface    
Console.WriteLine (type.IsAbstract); //prints true
于 2013-03-27T13:28:29.040 回答
1

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

于 2013-03-27T13:22:59.860 回答
0

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

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

在旁注中,您可能需要阅读内容。此接口在某些情况下存在问题。

于 2013-03-27T13:27:00.803 回答
-1

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

至于你的其他问题 - 我会调用你的代码函数GetServiceImplementation而不是GetNonConcreteService.

于 2013-03-27T13:31:30.617 回答