1

次のように配置された web.config セクションがあります。

<Section>
  <service1>
    <add name="Web" info="xyz"/>     
  </service1>
  <service2>
    <add name="App" info="xyz"/>     
  </service2>
  <service3>
    <add name="Data" info="xyz"/>     
  </service3>  
</Section>

以下を使用して、すべての要素を繰り返し処理しました。

var mySection = (Sections)ConfigurationManager.GetSection("Section");

foreach (SectionsElement element in mySection.service1)
foreach (SectionsElement element in mySection.service2)
foreach (SectionsElement element in mySection.service3)

ただし、これには、多かれ少なかれ同じことを実行するため、各 foreach で多くのコードをコピーする必要があります。この反復を一般化する方法はありますか?


編集:オブジェクトのリストを作成することでこれを解決できました。

var allservices = new List<object>(){
  mySection.service1,
  mySection.service2,
  mySection.service3
}

そして、繰り返します:

foreach (IEnumerable service in allservices)
  {
    foreach (SectionsElement element in service)
    {
      //repetitive code
    }
  }
4

2 に答える 2

1

インターフェイスを使用します。とが同じインターフェースを実装している場合mySection.service1、たとえば、次のようなことを簡単に行うことができます。.service2.service3IMyService

var services = new IMyService[] 
{ 
    mySection.service1, 
    mySection.service2, 
    mySection.service3 
};

foreach (var service in services)
{
    foreach (SectionsElement element in service)
    {
        // repetitive code
    }
}
于 2013-06-20T13:09:01.867 に答える