是否可以使用一个抽象属性来返回派生类中定义的类型:
abstract class baseClass
{
public abstract e_Type type { get; }
}
class derived : baseClass
{
public enum e_Type
{
type1,
type2
}
private e_Type _type;
public e_Type type { get { return _type; } }
}
或者我必须返回一个int并将其映射到派生类中。欢迎任何其他建议。
答案 0 :(得分:5)
嗯,您可以明确指定类型 - 但它必须是 a 类型,而不仅仅是“在具体子类中声明的一个名为e_Type”。
或者你可以把它变成一般类型,当然,就像这样:
public abstract class BaseClass<T>
{
public abstract T Type { get; }
}
public class Derived : BaseClass<EType>
{
public enum EType
{
...
}
private EType type;
public EType Type { get { return type; } }
}
如果不知道自己想要达到的目标,就很难建议合适的设计。
答案 1 :(得分:5)
当然可以:
abstract class BaseClass<T>
{
public abstract T Type { get; }
}
class Derived : BaseClass<EType>
{
public enum EType
{
type1,
type2
}
private EType _type;
public override EType Type { get { return _type; } }
}
您甚至不需要将其声明为抽象:
class BaseClass<T> {
private T _type;
public T Type { get { return _type; } }
}
然后您可以将其用作:
BaseClass<EType> classInst = new BaseClass<EType>();