【发布时间】:2011-05-13 13:04:25
【问题描述】:
我是一名 Java 人,正在尝试用 C# 实现一些代码。我做了一个小时的研究,但找不到任何东西。 我有一个我声明为 Generic 的接口,名为
interface TypeSerializer<T>
然后我有两个实现。
class StringSerializer: TypeSerializer<String>
和
class ByteArraySerializer: TypeSerializer<byte[]>
现在我想用这些实例创建一个数组,并将数组称为 TypeSerializer。像这样的:
TypeSerializer[] serializers =
new TypeSerializer[2] {new ByteArraySerializer(), new StringSerializer()};
此代码无法编译,但在 Java 中类似的代码可以编译。
我也试过了
TypeSerializer<Object>[] serializers =
new TypeSerializer<Object>[2] {new ByteArraySerializer(), new StringSerializer()};
还是没办法。
我应该如何声明这个数组并在不知道通用类型的情况下访问实例。
编辑
根据下面的答案,很明显我应该有两个接口;有和没有泛型。 这是接口方法。您能否也说明如何实施它们。
public interface ITypeSerializer<T>:TypeSerializer
{
void write(BinaryWriter writer, T obj);
T read(BinaryReader reader);
}
【问题讨论】:
-
欢迎来到 C# 的光明世界 ;-)
-
@Steven 谢谢,在这个光明的世界里找不到自己的路:)