BondTypeAliasConverter必须定义在“与表示使用类型别名的 Bond 模式的类或正在转换的类型之一的程序集/命名空间相同的程序集和命名空间中”。它不能在父命名空间中定义。搜索算法不是那么聪明。:-) 因此,在 TestB 中,您需要将 BondTypeAliasConverter 类放在 C# 命名空间“BondExampleB.Global.SecondType.SecondTypeA”(或您在 C# 中映射到的任何位置)中。
有一个开放的设计建议可以使这更容易一些。请参阅Bond GitHub 项目中的问题 #594。
在此之前,如果您想为不同命名空间中的类型使用相同的转换器,则需要执行以下操作:
namespace Util
{
public static class BondTypeAliasConverter
{
public decimal Convert(ArraySegment<byte> blob, decimal unused) { ... }
public ArraySegment<byte> Convert(decimal d, ArraySegment<byte> unused) { ... }
}
}
namespace First
{
public static class BondTypeAliasConverter
{
public decimal Convert(ArraySegment<byte> blob, decimal unused)
{
return Util.BondTypeAliasConverter.Convert(blob, unused);
}
....
}
}
namespace First.Second
{
public static class BondTypeAliasConverter
{
public decimal Convert(ArraySegment<byte> blob, decimal unused)
{
return Util.BondTypeAliasConverter.Convert(blob, unused);
}
....
}
}