我希望我的几个类能够告诉我它们中有多少个字段,并且我想强制我的所有类都通过继承具有这个,如下所示:
// this code does not compile
abstract class Base
{
abstract static const int FieldCount = -1
}
class Node : Base
{
int x, y, z; // has three fields, so:
override static const int FieldCount = 3;
}
class Way : Base
{
int w, x, y, z; // has four fields, so:
override static const int FieldCount = 4;
}
我无法让它工作,而不是使用接口或抽象基类。我需要这些信息仅通过类型可用,而不是通过类的实际实例(因此是静态的)。
class EnumerableDataReader<TSource> : IDataReader where TSource : Base {
public int FieldCount {
get {
return TSource.FieldCount <- access the static info, does not work
}
}
}
有没有办法做到这一点,或者反射是唯一的方法吗?
谢谢!