我有2个静态课程" Marshaler"正在处理数据类型的de / serialization,第一个是我的库的一部分,它序列化默认类型,如uint,第二个是我的应用程序的一部分,并序列化特定类型。
快速示例:
// LibMarshaler.cs:
public static class LibMarshaler
{
public static void Write(Archive a, string b)
{
Write(b.Length); // Works
Write(Encoding.UTF8.GetBytes(b)); // Works
}
public static void Write(Archive a, int b)
{
a.Write(b);
}
public static void Write(Archive a, byte[] b)
{
a.AppendBytes(b);
}
}
// AppMarshaler.cs
using static LibMarshaler;
public static class AppMarshaler
{
public static void Write(Archive a, CustomType1 b)
{
Write(a, b.exampleString); // error, can't find the function
Write(a, b.customType2); // works, is part of the same file
}
public static void Write(Archive a, CustomType2 b)
{
Write(a, b.exampleString); // error, can't find the function
}
}
我意识到这是因为AppMarshaler正在定义它自己的" Write"函数,因此C#编译器取消在其他文件中定义的每个其他函数。但我没有其他选择,因为我的所有代码都是生成的,并且依赖于这些功能。
有什么方法可以绕过它,为什么它就是这样?我没有覆盖任何现有的功能签名..