class Test
{
public BinaryWriter Content { get; private set; }
public Test Write<T> (T data)
{
Content.Write(data);
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
它不会编译.
1. The best overloaded method match for 'System.IO.BinaryWriter.Write(bool)' has some invalid arguments
2. Argument 1: cannot convert from 'T' to 'bool'
Run Code Online (Sandbox Code Playgroud)
似乎Test.Write总是试图调用BinaryWriter.Write(bool).有什么建议?
重载解析发生在编译时,在这种情况下,对 T 一无所知,因此没有重载适用。
class Test
{
public BinaryWriter Content { get; private set; }
public Test Write<T>(T data)
{
Content.Write((dynamic)data);
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
但当然它可能会产生一些问题。例如,如果您将 DateTime 发送到方法,应用程序将可以正常编译。但是,它会抛出异常。