次のように設定されたクラスがあるとします。
public abstract class GenericCustomerInformation
{
//abstract methods declared here
}
public class Emails : GenericCustomerInformation
{
//some new stuff, and also overriding methods from GenericCustomerInformation
}
public class PhoneNumber : GenericCustomerInformation
{
//some new stuff, and also overriding methods from GenericCustomerInformation
}
//and more derivative classes for emails, addresses, etc ..
次に、特定のリストを返すこの関数があります。
public List<GenericCustomerInformation> GetLists<T>()
{
if (typeof(T) == typeof(Alias))
{
return aliases.Cast<GenericCustomerInformation>().ToList();
}
if (typeof(T) == typeof(PhoneNumber))
{
return phoneNumbers.Cast<GenericCustomerInformation>().ToList();
}
// .. and the same for emails, addresses, etc ..
}
ここで、関数を 1 つだけ使用してこれらのリストに追加したいとします。
public void AddToList<T>(T iGenericCustomerInformation)
{
GetLists<T>().Add((T)(object)iGenericCustomerInformation); //Doesn't work as intended. GetLists<T> seems to be returning lists as value, which is why any additions
}
問題は、AddToList<T>
意図したとおりに機能しないことです。GetLists<T>
リストを値として返しているようです。これが、私が行った追加がプライマリリスト構造に反映されていない理由です...
では、その参照を使用して他の関数を介してリストの追加を行うことができるように、リストを参照として返す方法は?