Вы можете попробовать docker exec -it $your_container_id bash
.
Документы предоставляют больше информации о том, что он делает, и обо всех параметрах. Но он должен работать в любом формате, который у вас есть в Dockerfile.
Нормальный способ сделать это должно было бы сделать метод универсальным:
public void ProcessItems<T>(Item<T>[] items) {
foreach(Item<T> item in items)
item.DoSomething();
}
Принятие вызывающая сторона знает тип, вывод типа должен означать, что они не должны явно указывать его. Например:
Item<int> items = new Item<int>(); // And then populate...
processor.ProcessItems(items);
Однако создавая неуниверсальный интерфейс, указывающий агностические типом операции, может быть полезным также. Это будет очень зависеть от Вашего точного варианта использования.
Я вижу, что Вы только хотите вызвать некоторый метод без параметров... уже существует контракт для этого: Action
.
public void processItems(IEnumerable<Action> actions)
{
foreach(Action t in actions)
t();
}
Клиент:
List<Animal> zoo = GetZoo();
List<Action> thingsToDo = new List<Action>();
//
thingsToDo.AddRange(zoo
.OfType<Elephant>()
.Select<Elephant, Action>(e => e.Trumpet));
thingsToDo.AddRange(zoo
.OfType<Lion>()
.Select<Lion, Action>(l => l.Roar));
thingsToDo.AddRange(zoo
.OfType<Monkey>()
.Select<Monkey, Action>(m => m.ThrowPoo));
//
processItems(thingsToDo);
Нет никакого способа, которым можно опустить Параметры Типа в.NET универсальная реализация; это дизайном. На самом деле это может только быть достигнуто в Java из-за его основанной на типе-стиранием реализации.
можно только использовать основной неуниверсальный интерфейс (думайте IEnumerable<T>
и IEnumerable
).
В дополнение к сообщению Jon. создание универсального метода (шаблон) инвертирует требование для этого вида функциональности (использующий <? >). Можно всегда подавать тип в универсальный класс/функцию и для случаев, где Вы не знаете то, что вводит Вас, будет нуждаться в Вас, может сделать незаконный метод/класс универсальным, также... в конечном счете пользователь должен обеспечить тип при вызывании такой функции или использовании универсального класса, чтобы код смог скомпилировать... иначе, Вы получите некоторые ошибки компилятора.
] Я боролся с той же проблемой, когда речь заходила о портировании вещей с Java, где у меня были конструкции типа [
]. [if (o instanceof Collection<?>) doSoemthing((Collection<?>)o);
]
[] К счастью, оказывается, что родовая Коллекция - это тоже не генерическая Коллекция, и если кому-то нужно обращаться с элементами в ней как с чистыми предметами, то это все равно возможно:[
]. [if (o is ICollection) DoSomething((ICollection)o);
]
[] Таким образом, так как нас не волнует реальный тип элементов в коллекции, все, что мы получаем здесь - это объекты. Заметка: если в коллекции были примитивные типы (например, int или байт), то автобоксирование может привести к штрафу за выполнение [
].