是否可以使用一个抽象属性来返回派生类中定义的类型:
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; } }
}
Run Code Online (Sandbox Code Playgroud)
或者我必须返回一个int并将其映射到派生类中.欢迎任何其他建议.
好吧,你可以明确地指定类型 - 但它必须是一个类型,而不仅仅是"在具体子类中声明的一个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; } }
}
Run Code Online (Sandbox Code Playgroud)
如果不知道你想要实现什么,就很难建议一个合适的设计.
你当然可以:
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; } }
}
Run Code Online (Sandbox Code Playgroud)
您甚至不需要将其声明为抽象:
class BaseClass<T> {
private T _type;
public T Type { get { return _type; } }
}
Run Code Online (Sandbox Code Playgroud)
您可以将其用作:
BaseClass<EType> classInst = new BaseClass<EType>();
Run Code Online (Sandbox Code Playgroud)