'使用静力学'和具有相同名称的方法

时间:2016-09-17 16:08:28

标签: c# static using

我有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#编译器取消在其他文件中定义的每个其他函数。但我没有其他选择,因为我的所有代码都是生成的,并且依赖于这些功能。

有什么方法可以绕过它,为什么它就是这样?我没有覆盖任何现有的功能签名..

0 个答案:

没有答案