2016-10-15 9 views
1

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

現在の負荷()メソッドは、異なるオブジェクトをロードしますが、私は、要求に一致する戻り値の型を把握するために苦労しています。これがジェネリックスを使用して達成できるものかどうかを知りたいですか?

ここで参照のためのコードの抜粋です:可能な解決策の

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

一つは、一般的なクラスとしてデータローダーを作ることです。

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(...); 
    } 
} 
関連する問題