我一直在网上寻找这个错误很长一段时间。我似乎无法想出这个。
我在vs 2010中使用vb.net创建了一个Web服务。以下是我的属性
Public Class MyClass
Inherits ConfigurationSection
Protected _score As Integer
<ConfigurationProperty("score", DefaultValue:="12", IsRequired:=False), _
IntegerValidator(ExcludeRange:=False, MinValue:=6, MaxValue:=24)>
Property gt_score() As Integer
Get
Return CType(Me("score"), Integer)
End Get
Set(ByVal value As Integer)
Me("score") = value
End Set
End Property
End Class
当我尝试将此作为服务添加到Web应用程序时,也在使用vb.net的vs2010中完成,我在标题中收到错误。请帮忙。我不确定实现默认访问器需要什么。
答案 0 :(得分:1)
我一直在努力解决类似的问题。我有一个继承自ConfigurationSection的类,但是当我尝试将它与XMLSerializer一起使用时,我得到了相同的错误消息。
我认为这个问题无法在班上解决。问题在于祖先的属性(ConfigurationSection)。它有4个ConfigurationLockCollection类型的公共属性(即LockAllAttributesExcept,LockAllElementsExcept,LockAttributes和LockElements)。在序列化期间,序列化程序发现这些属性实现ICollection但没有必需的默认访问器,因此是例外。
就我而言,我尝试使用XMLIgnore()来遮蔽这4个属性并进行装饰,但仍然会遇到同样的问题。 AFAIK将无法序列化继承自ConfigurationSection的任何类,直到MS将默认访问者添加到ConfigurationLockCollection。
现在我将实现我自己的方法,只从我的自定义配置部分序列化我需要的属性。
答案 1 :(得分:0)
我没有使用VB.net,但一般来说,ICollection是一个接口类。
接口描述了从接口继承的类需要定义的方法和属性。在您的情况下,您的derrived类MyClass
需要定义默认访问者。
如果你尝试怎么办?
get
{
return this;
}
答案 2 :(得分:0)
我遇到了同样的问题。我通过创建一个XML包装器对象来解决它,该对象只包含我想要序列化的属性,并创建两个方法,这些方法从unserializable对象(从ConfigurationElement派生的自定义配置元素)映射到Attribute对象并返回。 然后我可以序列化/反序列化一组简单对象。