在单个方法调用中指定不同的返回类型对象

时间:2016-10-15 21:44:23

标签: c# asp.net .net generics c#-4.0

我试图通过单个方法调用从文件中加载不同的不同对象,如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
       }
}

1 个答案:

答案 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(...);
    }
}