我有一个物体可以追踪和某人联系的最佳时间。它可以设置为Anyday、Weekdays、Evenings、specific days和Anytime、morning、午后、晚上和specific times。保存对象后,它将被序列化并发送到WCF服务器。
从本质上讲,对象是7天的集合。每天包含一个int表示一周中的某一天,一个timespan集合定义该天的正常通话时间,一个boolean标志集合定义选择了哪些“快捷方式”时间组(上午、下午、晚上等)。
我正在使用MVVM,并且有一个VM来处理这个类。除了天数集合之外,VM包含的唯一属性是一个int值,其中定义了工作日的“快捷方式”组(工作日、周末等)。
在我将工作日的“快捷方式”组设置为“SpecificDays”之前,一切都非常顺利。保存时,尝试将对象传递到WCF服务器时出错。该错误表示它无法序列化具有如下所示内部异常的参数(请记住,WCF错误是非常通用的,通常根本不指向问题)。以下是我尝试做的截图:
这对我来说没有意义,因为ShortcutWeekday根本没有发送到WCF服务器。唯一要做的就是收集天数。另一件令人费解的事情是,单击“特定日期”单选按钮,然后单击返回到另一个选择,WCF调用也会失败。另外,如果问题出在我的类本身,它不会在任何时候都无法保存,而不仅仅是在特定的日子??我使用上面的示例仔细检查了Days集合的属性值,并且对象属性设置完全相同。
内部异常:
"Type 'System.DelegateSerializationHolder+DelegateEntry' with data contract name
'DelegateSerializationHolder.DelegateEntry:http://schemas.datacontract.org/2004/07/System'
is not expected. Consider using a DataContractResolver or add any types not known
statically to the list of known types - for example, by using the KnownTypeAttribute
attribute or by adding them to the list of known types passed to DataContractSerializer."
// Used to track which Radio Button is selected
private int _selectedWeekdayGroup = 0;
// Object holding the current BestContactTime
private BestContactTime _bestContactTime;
// Shortcut to multiple Days in BestContactTime
public int SelectedWeekdayGroup
{
get { return _selectedWeekdayGroup; }
set
{
//UpdateCallableDays(value); // This updates the BestContactTime.Days collection
_selectedWeekdayGroup = value;
//OnPropertyChanged("SelectedTimesGroups"); // This property is just which set of ShortcutTimes are displayed in checkboxes
}
}
最佳接触时间:
// Should always have only 7 objects, one per day of week
public ObservableCollection<ContactDay> Days;
联系日期:
public int WeekDay;
public SortableObservableCollection<TimeSpan> CallableTimes;
public SortableObservableCollection<bool> CallableTimeGroups;
SortableObservaleCollection只是从ObservaleCollection继承的一个类,它带有一些附加的方法,如Sorting和AddRange。