2012-06-01 19 views
7

こんにちは私のwcfサービスを実行中にエラーが発生しました "この操作はタイプsystem.object []」この操作は、タイプsystem.object []を使用しているため、wcfテストクライアントではサポートされていません。

enter image description here

イムは、実行中のプロセスのリストを取得しようとしています。

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] 
    class Windows_processes_Service:IWindows_processes_Service 
    { 
     ArrayList RunningProcesses_Name = new ArrayList(); 
     public ArrayList GetRunningProcesses() 
     { 
      Process[] processlist = Process.GetProcesses(); 
      foreach (Process nme_processes in processlist) 
      { 
       RunningProcesses_Name.Add(nme_processes.ProcessName.ToString()); 
      } 
      return RunningProcesses_Name; 
     } 
    } 

答えて

1

あなたが追加しているので、文字列(ProcessName.ToString()からToString()ProcessNameとして必要とされていないものの、すでにstringである)あなたのサービスには、あなたはList<string>代わりArrayListのを返すようにメソッドを定義する必要があります。

これは、のように簡略化することができます。

[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)] 
class Windows_processes_Service:IWindows_processes_Service 
{ 
    public List<string> GetRunningProcesses() 
    { 
     return Process.GetProcesses().Select(p => p.ProcessName).ToList(); 
    } 
} 
3

問題はArrayList(エラーでこれobject[])のリストとすることができ、テストクライアントがそれを扱うことができないということです。 WCFでは任意のオブジェクトの配列を返すことは完全に合法ですが、この場合はクライアントが関心を持っている実際の型を返すことを検討してください。Stringの配列に行うべきです。

また、現代(> 1.1)バージョンの.NETでは、通常はArrayListが使用されません。通常はList<T>という一般的な方が適切です。