我正在尝试创建一个抽象泛型类,它继承自另一个抽象泛型类。
这是我到目前为止所拥有的
public abstract class BaseClass {
public long Id { get; private set; }
public BaseClass(long id) {
this.Id = id;
}
}
public abstract class BaseClass<T> : BaseClass where T : BaseClass {
protected BaseClass(long id)
: base(id) {
}
public static T Get(long id) {
T item;
return TryGet(id, out item) ? item : default(T);
}
public static bool TryGet(long id, out T item) {
item = null; // This is where I call the cache but for this example I've removed so it will compile
if (item != null) { return true; }
else {
// Call TryGetFallback method
return false;
}
}
protected abstract T TryGetFallback(long id);
}
public abstract class DerivedClass : BaseClass<DerivedClass> {
public String Name { get; private set; }
public DerivedClass(long id, String name)
: base(id) {
this.Name = name;
}
}
public class DerivedDerivedClass : DerivedClass {
protected override DerivedDerivedClass TryGetFallback(long id) {
// Handle the try get fallback
}
}
DerivedDerivedClass 上的 TryGetFallback 方法会导致编译器错误。
首先你需要修复你的BaseClass<T>
实现没有递归类型约束。
public abstract class BaseClass<T> : BaseClass where T : new() {
//snip
}
然后你可以在你的派生类中使用它,例如我将使用它int
对于泛型类型参数:
public abstract class DerivedClass : BaseClass<int> {
//snip
}
现在如果你编译它会警告你'DerivedDerivedClass' does not implement inherited abstract member 'BaseClass<int>.TryGetFallback(long)'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)