4

インターフェイスまたは抽象のいずれかであるが、具体的なタイプではないタイプを説明するための正しい用語は何ですか?

この質問は、IDependencyResolverMVC4用にStructureMapを配線した結果として発生します。私は少しリファクタリングをしていて、これを作成しました:

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 に答える