generics- все статьи тега
Как использовать generic Tryparse с перечислением?
Я пытаюсь построить универсальную функцию, которая получает от пользователя строку и пытается разобрать ее для перечисления valuse следующим образом: private Enum getEnumStringEnumType(Type i_EnumType) { string userInputString = string.Empty; Enum resultInputType; bool enumParseResult = false; while (!enumParseResult) { userInputString = System.Console.ReadLine(); enumParseResult = Enum.TryParse(userInputStrin ...
В c# есть ли способ написать универсальный такой объект: Object?
Есть ли способ сделать что-то подобное в c#? Рассмотрим следующий пример и предположим, что Child1, Child2, Child3-все дети Parent - class Class1 { SomeObject< Parent > mSomeObject; Class1() { if (condition1) mSomeObject = new SomeObject<Child1>(); else if (condition2) mSomeObject = new SomeObject<Child2>(); else if (condition3) mSomeObject = new SomeObject<Child3>(); } } Идея состоит в том, что этот C ...
Несовместимые типы при использовании верхнего ограничивающего подстановочного знака
Я действительно запутался в том, как работают верхние ограниченные типы в генераторах Java. Допустим, у меня есть interface IModel<T> interface I class A implements I class B implements I class C implements I Тогда у меня есть метод с параметром следующим образом foo(IModel<Map<? extends I, Map<? extends I, List<? extends I>>>> dataModel) Вызов этого метода как IModel<Map<A, Map<B, List<C>>>> model = ... foo(model) Заканчивается ...
C# абстрактный класс возвращает перечислитель производных типов
Если у меня есть абстрактный класс, могу ли я каким-либо образом вернуть перечислитель типа производного класса? Или мне придется использовать универсальные методы в базовом классе или универсальный метод? Вот действительно тупой пример того, что я пытаюсь сделать - public abstract class Person { public IEnumerable<MyType> Search() { DbDataReader reader = Database.Instance.ExecuteReader(sql); while(reader.Read()) { MyType row = new MyType(); row ...
Java кастинг списка к своему интерфейсу
У меня есть: class Hammer Implements Part { public String getName() { return name; } public int getId() { return id; } ... } class Wrench implements Part { public String getName() { return name; } public int getId() { return id; } ... } interface Part { String getName(); int getId(); } Я использую встроенный менеджер баз данных, написанный для Android SQLite, который возвращает список объектов, основанный на том, что я получаю: dataManager().getWrenchDao() ...
C# generics: ошибка вывода универсального типа означает, что я не могу использовать анонимный тип
У меня есть класс Exporter, который имеет универсальный метод, который принимает IEnumerable<T> и создает экспортный документ, перечисляя его значения свойств с помощью отражения: public class Exporter { public string Export<T>(IEnumerable<T> enumerable) { //Implementation omitted } } Из-за вывода универсального типа я могу снабдить его анонимным типом коллекции. Обратите внимание на отсутствие универсального параметра в вызове метода ниже: string ...
Как создать универсальную объектную модель для использования в QML?
Я хотел бы знать, есть ли какой-либо макрос или способ, как зарегистрировать модель Qt как свойство QObject. Например, у меня есть AnimalModel (http://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html#qabstractitemmodel). Я знаю, что могу передать его в корневой контекст QuickView QuickView view; view.rootContext()->setContextProperty("myModel", &model); В случае, если у меня есть QObject, зарегистрированный с помощью макросов Qml, я могу передать этот объект для просмотра: vi ...
Bash generic" ps aux " процесс по строгому имени
Я пытаюсь иметь команду ps aux, перечисляющую только реальный процесс ssh-агента. Я заметил, что на некоторых дистрибутивах у меня появляются нежелательные процессы, такие как цвета команд и т. д. Мне нужно сделать это, потому что мне нужно убедиться, что реальный процесс ssh-агента выполняется в скрипте (не беспокойтесь, у меня уже есть цикл для него...). Поэтому я решил, что мне нужно использовать что-то вроде этого в моей тестовой процедуре: #!/bin/bash ps aux | grep ssh-agent | grep -v gr ...
Структура Данных Списка Эффективность C#
В данный момент я использую List<short> в качестве буфера для хранения вещей на некоторое время, пока вычисление производится для каждого значения на основе других значений ниже по буферу. Затем я понял, что это, вероятно, не очень эффективно, поскольку мне сказали, что List<> - это связанный список, поэтому каждый раз, когда я делаю whatever = myList[100];, бедняжке приходится сначала прыгать вниз по всем другим узлам, чтобы добраться до нужного мне значения. Я не хочу использовать ...
Типы UInt32 и UInt64 не могут быть выведены из использования при использовании вместе с типом Int32 в универсальном методе
Изначально я столкнулся с этой проблемой, когда тестировал свой код с UnitTest framework с помощью Assert.Равнозначные методы. Я заметил, что для типов UInt32 и UInt64 была выбрана разная перегрузка AreEqual (AreEqual(object, object) вместо AreEqual(T, T)). Я провел небольшое исследование и получил следующий простой код: public struct MyInteger { public SByte SByte { get; set; } public Byte Byte { get; set; } public UInt16 UInt16 { get; set; } public UInt32 UInt32 { get; set; } ...
как использовать дженерики в Scala
Я закодировал этот компонент, чтобы чередовать разные языки: import scala.collection.mutable.Map sealed trait Language case object English extends Language { val messages: Map[String, String] = Map("M01" -> "Ready for cooking - press START", "M02" -> "Close the door to start cooking") } case object French extends Language { val messages: Map[String, String] = Map("M01" -> "Pret pour la cuisson - presse START", "M02" -> "Fermez la porte pour commencer la cui ...
Аргумент типа универсального метода Java
У меня есть проблема с явными аргументами типа универсального метода. Я знаю, что могу сделать это: Foo.<Bar>function(); Предполагая, что существует void <T> function() {...} Функция в классе Foo. Точная проблема такова: Я хотел бы загрузить некоторый контент (Android с Ion) Эти материалы похожи (статья, Статья В блоге,...), все реализует интерфейс ContentItem На данный момент загрузка выглядит так это: Новости, например private void downloadNews() { Ion.with( ...
Не удается реализовать элемент интерфейса, так как он не имеет соответствующего возвращаемого типа списка
У меня есть интерфейсы IChild и IParent. IParent имеет член, который является List<IChild>. Я хочу иметь классы, реализующие IParent , где каждый класс имеет член, реализующий IChild: public interface IChild { } public interface IParent { List<IChild> a { get; set; } } public class ChildA : IChild { } public class ChildB : IChild { } public class ParentA : IParent { public List<ChildA> a { get; set; } } public class ParentB : IParent { public Lis ...
Рекурсивные обобщения
Есть ли способ сделать этот метод должным образом универсальным и избавиться от предупреждений? /** * <p>Sort a collection by a certain "value" in its entries. This value is retrieved using * the given <code>valueFunction</code> which takes an entry as argument and returns * its value.</p> * * <p>Example:</p> * <pre>// sort tiles by number *Collects.sortByValue(tileList, true, new Function<Integer,NormalTile>() { * public Integer call(No ...
Создать универсальный метод, ограничивающий T перечислением
Я создаю функцию для расширения Enum.Parse концепция позволяет анализировать значение по умолчанию в случае, если значение перечисления не найдено без учета регистра поэтому я написал следующее: public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { if (string.IsNullOrEmpty(value)) return defaultValue; foreach (T item in Enum.GetValues(typeof(T))) { if (item.ToString().ToLower().Equals(value.Trim().ToLower())) return item; } retu ...
Как отсортировать список по свойству в объекте
у меня есть класс с именем Order который имеет такие свойства, как OrderId,OrderDate,Quantity и Total. У меня есть список этого Order класс: List<Order> objListOrder = new List<Order>(); GetOrderList(objListOrder); // fill list of orders теперь я хочу отсортировать список на основе одного свойства ...
Разница между
этот вопрос уже есть ответ здесь: что такое PECS (производитель расширяет потребитель супер)? 11 ответов в чем разница между List<? super T> и List<? extends T> ? я использовал, чтобы использовать List<? extends T>, но это не позволяет мне добавить к нему элементы list.add(e), а List<? super T> делает. ...
Как сделать тип возвращаемого метода универсальным?
рассмотрим этот пример (типичный в книгах ООП): у меня есть Animal класса, где каждый элемент Animal может быть много друзей. И подклассы вроде Dog,Duck,Mouse etc которые добавляют специфическое поведение как bark(),quack() etc. здесь Animal класс: public class Animal { private Map<String,Animal> friends = new HashMap<>(); public void addFriend(String name, Animal animal){ friends.put(name,animal); } public Animal callFriend(String name){ return f ...
Как я могу вернуть NULL из универсального метода в C#?
У меня есть общий метод с этим (фиктивным) Кодом (да, я знаю, что IList имеет предикаты, но мой код не использует IList, а какую-то другую коллекцию, в любом случае это не имеет значения для вопроса...) static T FindThing<T>(IList collection, int id) where T : IThing, new() { foreach T thing in collecion { if (thing.Id == id) return thing; } return null; // ERROR: Cannot convert null to type parameter 'T' because it could be a value type. Consider usin ...
Как удалить элементы из общего списка во время итерации по нему?
Я ищу лучшего pattern для работы со списком элементов, каждый из которых необходимо обработать и затем в зависимости от результата удалить из списка. вы не можете использовать .Remove(element) внутри foreach (var element in X) (потому что это приводит к Collection was modified; enumeration operation may not execute. исключения)... вы также не можете использовать for (int i = 0; i < elements.Count(); i++) и .RemoveAt(i) потому что это нарушает ваше текущее положение в коллекции относительно ...