簡體   English   中英

是否有一個術語可以互換地描述C#中的接口或抽象類?

[英]Is there a term which interchangeably describes either an Interface or an Abstract Class in C#?

描述可能是接口或抽象類型但不是具體類型的類型的正確術語是什么?

這個問題是由於將StructureMap IDependencyResolver為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是一個糟糕的方法名稱,這讓我想知道是否會有一個同樣准確但更好的術語。

為了回答你的代碼示例,他們都在.net調用了Abstraction 為了證明這一點:

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

也許你可以把它們稱為“抽象”。 接口定義了一組方法/屬性/事件,如果實現接口,則必須定義這些方法/屬性/事件。 抽象類可以實現功能,但也可以定義抽象方法,如果從抽象類繼承,則必須實現類似於Interfaces的抽象方法。 不同的是抽象類可以提供一些功能。

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

我認為無論如何你應該區分接口和抽象類。 接口為您提供功能定義(無實現),而抽象類可以部分實現,因此與普通類沒有太大區別(除非您無法實例化它)。

另外,您可能想要閱讀此內容 此接口在某些情況下存在問題。

在C#術語中,它們都是基本類型。 實際上沒有一個特定的術語描述兩者。

至於你的另一個問題 - 我會調用你的代碼函數GetServiceImplementation而不是GetNonConcreteService

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM