[英]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.