CommunicationException
クライアントへのコールバックを実行しようとするとエラーが発生します。問題がこのクラスにあることはわかっていますが、シリアル化に問題があるメンバーはわかりません。
[DataContract]
public sealed class DirectoryInformation : FileSystemInfo
{
public override void Delete()
{
Directory.Delete(FullName);
}
[DataMember]
public override string Name
{
get { return Path.GetFileName(FullName); }
}
[DataMember]
public override bool Exists
{
get { return Directory.Exists(FullName); }
}
[DataMember]
public int Size { get; private set; }
#region Ctor
public DirectoryInformation(string directory)
{
FullPath = directory;
Refresh();
CalculateDirectorySize(directory);
}
public DirectoryInformation()
{
}
#endregion
#region Private Methods
private void CalculateDirectorySize(string directory)
{
if (!IsDirectoryAccessible(directory)) return;
Size = Size + (int) Directory.GetFiles(directory).Select(x => new FileInfo(x)).Sum(x => x.Length);
foreach (var dir in Directory.GetDirectories(directory))
CalculateDirectorySize(dir);
}
private static bool IsDirectoryAccessible(string directory)
{
try
{
Directory.GetFiles(directory);
return true;
}
catch (UnauthorizedAccessException)
{
return false;
}
}
#endregion
}
FileSystemInfo
継承を削除しても問題が解決しないため、既に確認しましたが、 のメンバーの 1 つではありません。すべてのメンバーにDataMember
属性を割り当てていることと、標準のコンストラクターがあることを確認しました。
問題の原因は私が存在を認識していないものだと思いますが、それは何でしょうか?