我想在PakFileFormat类中声明一个泛型字段,以便可以用派生类中的具体类型替换。
这没关系:
public class Pak10File : PakFileFormat
{
public Pak10File()
{
this.toc = new PakFileToc<Pak10FileEntry>();
}
}
如何解决这个问题? 感谢。
相关课程
public abstract class PakFileEntry { }
public class Pak10FileEntry : PakFileEntry
{
public long size; // 8 bytes
public long csize; // 8 bytes
public long offset; // 8 bytes
public byte fname_len; // 1 byte
public char[] fname; // variable
}
public class PakFileToc<T> where T : PakFileEntry { }
public abstract class PakFileFormat
{
protected PakFileToc<T>; // ----- This does not compile.
}
答案 0 :(得分:1)
为了进行编译,你还需要使PakFileFormat
通用。
为了使其有用,您可能需要使PakFileFormat
实现某种非泛型接口。
如果不确切知道您需要PakFileFormat
实际做什么,或者如何使用它,很难提供更多细节。
public abstract class PakFileFormat<TPakFile> where TPakFile : PakFileEntry
{
protected PakFileToc<TPakFile> toc;
}
子类看起来像是:
public class Pak10File : PakFileFormat<Pak10FileEntry>
{
public Pak10File()
{
this.toc = new PakFileToc<Pak10FileEntry>();
}
}