Как передать List <DerivedClass>, когда типом параметра является List <BaseClass>?
Как я могу передать список, который является списком DerivedObjects, где Метод ожидает список BaseObjects. Я конвертирую список.ToList<BaseClass>()
и мне интересно, есть ли лучший способ. Моя вторая проблема - неправильный синтаксис. Я пытаюсь передать список byref, и я получаю сообщение об ошибке:'ref' argument is not classified as a variable
Как я могу исправить эти две проблемы? Благодарю.
public class BaseClass { }
public class DerivedClass : BaseClass { }
class Program
{
static void Mai,n(string[] args)
{
List<DerivedClass> myDerivedList = new List<DerivedClass>();
PassList(ref myDerivedList.ToList<BaseClass>());
// SYNTAX ERROR ABOVE IS - 'ref' argument is not classified as a variable
Console.WriteLine(myDerivedList.Count);
}
public static void PassList(ref List<BaseClass> myList)
{
myList.Add(new DerivedClass());
Console.WriteLine(myList.Count);
}
}
Решено:
Метод, подобный этому, решил мою проблему.
public static void PassList<T>(ref List<T> myList) where T : BaseClass
{
if (myList == null) myList = new List<T>();
// sorry, i know i left this out of the above example.
var x = Activator.CreateInstance(typeof(T), new object[] {}) as T;
myList.Add(x);
Console.WriteLine(myList.Count);
}
Спасибо всем, кто помогает через этот вопрос и из других вопросов SO.