Здравствуйте, Inquisitive, Вы писали:
I>В чем тут проблема?
Сделай ReferenceParameter сериализуемым.
Примерно так:
[Serializable]
public class GridColumnInfo : ISerializable
{
private string Column_Name;
private string DataColumn_Name;
private string Column_HeaderText;
private bool Column_Visible;
private bool frosen;
private int Column_Width;
private int Column_DisplayIndex;
#region .ctor
public GridColumnInfo()
{
Column_Name = "";
Column_HeaderText = "";
Column_Visible = true;
frosen = false;
Column_Width = -1;
Column_DisplayIndex = -1;
}
private GridColumnInfo(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
this.Column_Name = (string)info.GetValue("Column_Name", typeof(string));
this.Column_HeaderText = (string)info.GetValue("Column_HeaderText", typeof(string));
this.Column_Visible = (bool)info.GetValue("Column_Visible", typeof(bool));
this.frosen = (bool)info.GetValue("frosen", typeof(bool));
this.Column_Width = (int)info.GetValue("Column_Width", typeof(int));
this.Column_DisplayIndex = (int)info.GetValue("Column_DisplayIndex", typeof(int));
}
#endregion
[
SecurityPermissionAttribute(
SecurityAction.LinkDemand,
Flags = SecurityPermissionFlag.SerializationFormatter)
]
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
info.AddValue("Column_DisplayIndex", this.Column_DisplayIndex);
info.AddValue("Column_HeaderText", this.Column_HeaderText);
info.AddValue("Column_Name", this.Column_Name);
info.AddValue("Column_Visible", this.Column_Visible);
info.AddValue("Column_Width", this.Column_Width);
info.AddValue("frosen", this.frosen);
}
public string DataColumnName
{
get { return this.DataColumn_Name; }
set { this.DataColumn_Name = value; }
}
public string Name
{
get { return this.Column_Name; }
set { this.Column_Name = value; }
}
public bool Visible
{
get { return this.Column_Visible; }
set { this.Column_Visible = value; }
}
public int Width
{
get { return this.Column_Width; }
set { this.Column_Width = value; }
}
public int DisplayIndex
{
get { return this.Column_DisplayIndex; }
set { this.Column_DisplayIndex = value; }
}
public string HeaderText
{
get { return this.Column_HeaderText; }
set { this.Column_HeaderText = value; }
}
public bool IsFrosen
{
get { return this.frosen; }
set { this.frosen = value; }
}
}
Код использования
[NonSerialized]
private List<GridColumnInfo> сolumnsSettings;
[Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
[DefaultValue(null)]
public List<GridColumnInfo> GridColumns
{
get
{
if (this.сolumnsSettings == null)
this.сolumnsSettings = new List<GridColumnInfo>();
return this.сolumnsSettings;
}
set
{
this.сolumnsSettings = value;
OnConfigurationChanged();
}
}