|
|
1
2
下面是使用反射的BinaryWriter的解决方案。 这基本上是扫描BinaryWriter以查找只接受一个参数的名为Write的方法,然后构建一个字典,其中方法处理哪种类型,然后为每个要写入的对象找到正确的方法并在Writer上调用它。 肮脏,你应该寻找更好的方法来完成整件事(不仅仅是写作部分),但它应该适合你目前的需要:
|
|
|
2
7
不是。强制转换必须在编译时已知,但实际类型仅在执行时已知。 但是请注意,有更好的方法来测试调用gettype的类型。而不是:
用途:
编辑:要回答额外的问题: “所有类型都是什么?”好吧,我想查一下二元书写器的文档吧… “我需要担心字节和字节吗?”不,byte是system.byte的别名,用c_表示。他们是同一类型的。 |
|
|
3
3
乔恩是对的,但我有另一个想法,你可能会发现有用。您是否考虑过将另一个字节添加到每个对象的传输中,然后使用该字节作为类型代码,告诉您在另一端将其强制转换为什么? |
|
|
4
3
你考虑过使用 BinaryFormatter 而不是二元编写器? 优势
缺点 在内部使用序列化,因此:
|
|
|
5
2
你要的是 动态调度 C 3.0没有。 您至少应该使用运行时检查来验证是否缺少类型。
如果你有一个
|
|
|
6
1
这是一个需要叫做 Double Dispatch . 我假设WRT对象是您自己编写的对象(假设它是类型writer)。以下是您可以做的:
编写器正在做的是将数据分派回输入端,告诉它使用它(编写器)来编写数据,但是这是为那个对象完成的,而这个对象不能提前知道。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |