我正在使用IOrganizationService
无法修改的预定义对象——它超出了我的控制范围。
并且默认情况下,这似乎IOrganizationService
返回已解析的类型,就好像EnableProxyTypes()
在 originating 某处被隐式调用一样OrganizationServiceProxy
。
这会破坏所有业务逻辑,因为早期绑定的实体不能那么容易地序列化,因为在不同的安装上它们可以解析为不同的类型。因此,即使它们被成功序列化,也不能 100% 确定它们可以被反序列化。
更具体地说,它是XrmToolBox
. 如果托管应用程序加载的插件使用早期边界,这些生成的类型将通过反射发现并应用于结果Retrieve
和RetrieveMultiple
调用。
例如RetrieveMultiple
,account
实体响应通常包含Entity[]
,该数组的每个项目都将LogicalName
属性设置为account
。
但是如果在汇编中发现了早期的绑定类型,我们称之为EarlyBouldLibrary.dll
,同样RetrieveMultiple
会返回EarlyBouldLibrary.Account[]
。该数组的每个项目都将派生自Entity
并包含与第一个示例相同的字段,但具有附加属性。
问题在于以下。如果我们尝试序列化EarlyBouldLibrary.Account[]
它XML
将会失败。因为EarlyBouldLibrary.Account
未知。
好的,可以将类型添加到已知。但是不能保证,有一天会在NewEarlyBouldLibrary.dll
...中找到另一种早期绑定类型,并且它们将具有名称NewEarlyBouldLibrary.Account
...这是未知的...
好的,让我们假设序列化成功,无论引用哪种类型EarlyBouldLibrary.Account
,NewEarlyBouldLibrary.Account
但是如果我们尝试反序列化,在这些早期绑定库不存在的环境中......操作将失败。
因此,唯一的方法是不使用我们无法控制的特定早期绑定类型,并使用标准和安全Entity
。但是系统自动解析代理类型是不可能的。
所以,问题:有没有办法禁用早期绑定类型的解析?