Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# Services
Hi,
 
I am trying to get the list of sub-directories of a directory from svc service, but it shows an error --
 
The type System.IO.FileSystemInfo cannot be deserialized as it doesn't has parameter less public constructor.
 
Please help me out from this situation.
 
Code Snippet--
 
[OperationContract]
private System.Collections.Generic.List<DirectoryInfo> GetSubDirectories(string directoryPath)
{
    try
    {
        DirectoryInfo dir = new DirectoryInfo(directoryPath);
        DirectoryInfo[] dirs = dir.GetDirectories();
        System.Collections.Generic.List<DirectoryInfo> childs = new System.Collections.Generic.List<DirectoryInfo>();
        foreach (DirectoryInfo dir1 in dirs)
        {
           // XmlObjectSerializer xml_serial = new XmlObjectSerializer(typeof(XML_directory));
            childs.Add(dir1);
        }
 
        return childs;
    }
    catch (Exception) { return null; }
    //return null;
}
Posted 8-Mar-13 6:28am
Edited 8-Mar-13 7:14am
v4
Comments
sjelen at 8-Mar-13 12:11pm
   
Improve your question with some relevant code, so we can see what you are trying to do.

1 solution

Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

My first suggestion would have been to try to create an inherited object from the directoryinfo class. But it is sealed. Anyway I would not recomend to you to return with a list of DirectoryInfo. I would create a DTO (Data Transfer Object). See the following:
 
The DTO:
[DataContract]
public Class DirectoryInfoDTO
{
  [DataMember]
  public DateTime CreationTime {get ; set;}
  
  [DataMember]
  public string Name {get ; set;}
 
}
 
And then the code: // Include: System.Linq;
var result = dirs.Select((a,b) => new DirectoryInfoDTO()
                  {  
                      Name = a.FullName,
                      CreationTime = a.CreationTime
                  }
 
the result will be a collection of DirectoryInfoDTO
  Permalink  
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 490
1 Maciej Los 305
2 Richard MacCutchan 270
3 Mathew Soji 220
4 BillWoodruff 210
0 OriginalGriff 8,834
1 Sergey Alexandrovich Kryukov 7,477
2 DamithSL 5,689
3 Maciej Los 5,329
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web04 | 2.8.1411028.1 | Last Updated 12 Mar 2013
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100