Is there a way of putting a static method in an abstract class that can return the derived type?
Does a static method even know what type it is even being called from in C#?
For example, a base class could be
public abstract class MyBase
{
public static IEnumerable<TDerivedType> LoadAll()
{
//functionality here
}
}
Then if MyDerivedType inherits MyBase, I’d like to be able to call MyDerivedType.LoadAll()
Nothing too important – I’m currently using a generic static method and calling MyBase.LoadAll<MyDerivedType>(), which works fine but it doesn’t look quite as ‘pretty’ as this would be.
Static members aren’t inherited, so the static method has to be told in some way what the derived type is. Your solution is one way. Another is the following:
Then:
That said, I think there is something wrong with your model.
MyBaserepresents something in your domain (of which they are more specific derived types) AND it knows how to load all of those objects? That’s two responsibilities, and that ain’t cool yo.