フォームで宣言されたインターフェイスを持つ C# でアプリケーションを開発しています。
public partial class frmProjectForm : Form, IProjectInfo
{
}
public interface IProjectInfo
{
string ProjectName { get; set; }
string ProjectTitle { get; set; }
string ProjectDescription { get; set; }
string ProjectAuthor { get; set; }
string ProjectCopyright { get; set; }
string ProjectTrademark { get; set; }
string ProjectCreationDate { get; set; }
string ProjectVersion { get; set; }
string ProjectFileName { get; }
string ProjectFilePath { get; }
string FullProjectPath { get; }
}
アプリケーションのどこかでこれを行いたい:
frmProjectForm f = new frmProjectForm();
f.ShowDialog(this);
...
...
IProjectInfo getProjectInfoMembersOnly = (IProjectInfo)f;
// persist the IProjectInfo members to JSON
string project = JsonConvert.SerializeObject( getProjectInfoMembersOnly );
このJsonConvert.SerializeObject
メソッドは爆発し、Button コントロールの自己参照ループについて不平を言っています。キャスト操作はフォームを除外していません。インターフェイスキャストがインターフェイスメンバーのみを返すようにしたいだけなので、その理由はわかりません。
私は何を間違っていますか?