C # Можете ли вы включать и распаковывать универсальные классы?

Assassinbeast спросил: 13 октября 2017 в 06:42 в: c#

Вы можете пометить и распаковать типы следующим образом:

List<object> items = new List<object>();
items.Add("hello");
items.Add(123);

Здесь не имеет значения, что мы вставляем, если оно происходит от объекта. Так что это работает.

Но возможно ли это сделать с универсальными классами? Как это:

public class Foo<T>
{
    public T MyItem;
}static void Main()
{
    List<Foo<object>> items = new List<Foo<object>>();
    items.Add(new Foo<string>() { MyItem = "Hello" });
    items.Add(new Foo<int>() { MyItem = 123 });
}

Здесь это выдаст мне ошибку несмотря на строку и int - это тип объекта.

Есть одно простое решение, о котором я подумал, - это повернуть new Foo < строка > в new Foo < объект >, а затем просто введите строковое значение в тип объекта следующим образом:

items.Add(new Foo<object>() { MyItem = "Hello" });

Но я нахожусь в ситуации, когда я не могу этого сделать.

Так есть ли какое-нибудь решение, чтобы сделать это возможным?


0 ответов