我试图通过单个方法调用从文件中加载不同的不同对象,如Person,Address等。我应该能够以某种方式在方法调用中提供返回类型,并期望该方法返回相同的对象。
示例:
var myAbstractClass = new MyAbstractClass() Person person = myAbstractClass.Load(source) -- Expecting to return Person Address addr = myAbstractClass.Load(source) -- Same call but this time expecting to return Address
目前Load()方法加载不同的对象,但我很难找出与请求匹配的返回类型。我想知道这是否可以使用Generics实现?
以下是代码的摘要:
public abstract class DataLoader
{
public abstract void Load(Source dataSoure);
}
public class AddressLoader : DataLoader
{
public override void Load(Source dataSoure)
{
//Load Address
}
}
public class PersonLoader : DataLoader
{
public override void Load(Source dataSoure)
{
//Load Person
}
}
答案 0 :(得分:0)
可能的解决方案之一是将DataLoader作为通用类:
public abstract class DataLoader<T>
{
public abstract T Load(Source dataSoure);
}
public class AddressLoader : DataLoader<AddressClass>
{
public override AddressClass Load(Source dataSoure)
{
//Load Address
//return new AddressClass(...);
}
}
public class PersonLoader : DataLoader<PersonClass>
{
public override PersonClass Load(Source dataSoure)
{
//Load Person
//return new PersonClass(...);
}
}