C# 如何在oracle coherence POF配置中指定完整的.net类型名称?

C# 如何在oracle coherence POF配置中指定完整的.net类型名称?,c#,gac,oracle-coherence,C#,Gac,Oracle Coherence,我在我的C#项目中使用oracle coherence。 .Net项目引用了一致性,它通过“注入”我的类型来设置一些一致性属性。POF配置的示例之一: <user-type> <type-id>1008</type-id> <class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name> </u

我在我的C#项目中使用oracle coherence。 .Net项目引用了一致性,它通过“注入”我的类型来设置一些一致性属性。POF配置的示例之一:

<user-type>
  <type-id>1008</type-id>
  <class-name>MyTypeName, MyAssembly, version=1.2.3.4, publicKeyToken=0f73b23f05811dc2</class-name>
</user-type>

1008
MyTypeName,MyAssembly,版本=1.2.3.4,publicKeyToken=0F73B03F05811DC2
即使所有my类型都是通过使用带有版本和公钥标记的全名来指定的,Coherence也不会使用它并绑定到MyAssembly

这对我来说是个大问题,因为MyAssembly在GAC中,绑定失败。当然,我可以使用应用程序配置并设置:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <qualifyAssembly partialName="MyAssembly" fullName="MyAssembly,Version=1.2.3.4,publicKeyToken=0f73b23f05811dc2,culture=neutral" />
</assemblyBinding>
我发现:

您不需要在类名中指定完全限定的类型名 元素。类型和程序集名称足够了

但如果我想指定完全限定名呢

--编辑

现在我遇到的新问题是关于tangosol coherence.override.xml的:

<security-config>
    <identity-transformer>
      <class-name>MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral</class-name>
    </identity-transformer>
    <principal-scope>false</principal-scope>
</security-config>

MyAssembly.IdentityTransformer,MyAssembly,版本=1.2.3.4,publicKeyToken=0f73b23f05811dc2,区域性=中性
假的
我得到的例外情况是:

未能实例化类 “MyAssembly.Identity变压器, MyAssembly,版本=1.2.3.4, publicKeyToken=0F73B03F05811DC2,区域性=中性“
MyAssembly.Identity变压器, MyAssembly,版本=1.2.3.4, publicKeyToken=0F73B03F05811DC2,区域性=中性

在程序集绑定日志查看器中:

<security-config>
    <identity-transformer>
      <class-name>MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral</class-name>
    </identity-transformer>
    <principal-scope>false</principal-scope>
</security-config>
警告:为程序集提供了部分绑定信息:警告: 程序集名称:MyAssembly,版本=1.2.3.4 |域ID:1

调用程序集:一致性,版本=3.7.1.3,区域性=中性,PublicKeyToken=0ada89708fdf1f9a


我通过分析分解的dll解决了这个问题

它看起来像:

Tangosol.Util.TypeResolver.Resolve(typeName);
无法解析指定如下类型的类型:

MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral
MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=0f73b23f05811dc2
但当它被指定为这样时,它可以:

MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, publicKeyToken=0f73b23f05811dc2, culture=neutral
MyAssembly.IdentityTransformer, MyAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=0f73b23f05811dc2
因此,修改tangosol coherence.override.xml将其修复