我有一个带有静态方法的基类,我想将其称为抽象泛型方法,但无法解决如何执行此操作。
这与前面提到的问题不同,我无法从基类的静态方法访问TryGetFallback抽象方法。
我到目前为止的代码如下。
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, new() {
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; // Try to get item from cache here
if (item != null) { return true; }
else {
// Item not in cache so call TryGetFallback to attempt to retrieve it
// Call TryGetFallback function
// item = TryGetFallback(id);
return item != null;
}
}
protected abstract T TryGetFallback(long id);
}
public class DerivedClass : BaseClass<DerivedClass> {
public DerivedClass() : base(0) {
}
protected override DerivedClass TryGetFallback(long id) {
throw new NotImplementedException();
}
}
我尝试将T实例化为新属性并从中调用TryGetFallback,但该方法不可用。