Articles of genéricos

Como posso encurtar List <List <KeyValuePair >>?

Eu quero armazenar uma lista de listas de pares de valores-chave em uma estrutura leve. Isso parece muito complicado. O que é melhor? A List <Dictionary > adiciona muita sobrecarga? Quais outras opções estão disponíveis?

Serialização JSON de genéricos

Eu tenho uma class que se parece com isso: public class MyData : IList<Tuple> A ideia é que você tenha uma lista de pares de valores. Simples o suficiente. Mas eu queria que isso fosse serializado de forma que parecesse um array de uma matriz de duplas (ex. double[][] ) ao invés de uma lista […]

C # Language: Como obter o tipo de class genérica ligada mas aberta?

Vamos dizer que eu tenho uma class tão genérica public class XClass { public void MethodA(){} } Como eu poderia obter o tipo de XClass não codificado, não se limitando ao método MakeGenericType como abaixo. —— elaboração detalhada abaixo usando MakeGenericType —— Eu posso pegar o tipo da class não acoplada e aberta “XClass ” […]

criar lista de tipo usando a variável Type em tempo de execução

Eu estou tentando simplificar meus methods na criação de várias variables ​​em uma function que é repetida para diferentes tipos e ações diferentes, eventualmente eu vou migrar para uma única function que pode manipular vários tipos, mas eu estou fazendo isso em etapas. Eu gostaria de poder fazer uma lista de objects em seus tipos […]

Registrando o método na fábrica genérica com StructureMap

Eu estou tentando usar um método em uma class de fábrica genérica no meu registro de structuremap. Normalmente, eu usaria o seguinte ao registrar um tipo usando um método de fábrica: For().Use(x => new FooFactory().GetFoo()); E o seguinte ao registrar um tipo genérico: For(typeof(ISomeGeneric)).Use(typeof(SomeGeneric)); Como posso combinar os dois e recuperar um tipo genérico de […]

tipo implícito convertido no método genérico

Por que eu recebo um erro de compilador no código a seguir informando: Cannot implicty convert type SpecialNode to T , embora T deve derivar de NodeBase como eu defini na cláusula where e mesmo que SpecialNode realmente derivado de NodeBase? public static T GetNode() where T : NodeBase { if (typeof(T) == typeof(SpecialNode)) { […]

Qual é a diferença entre IList e IList

Definição de List em .net mostra implementar várias interfaces. public class List : IList, ICollection, IEnumerable, IList, ICollection, IEnumerable O que muda de interfaces com e sem T traz IList ou seja, se uma das minhas classs implementar IList e não IList , então eu posso usá-lo como minha class de coleção personalizada ou não?

A conversão de Func para Func funciona, mas para Func falha

Eu tenho o seguinte código: static Func s_objToString = (x) => x.ToString(); static Func s_stringToString = s_objToString; //compiles static Func s_intToString = s_objToString; //error A segunda linha compila mas a terceira linha não compila com erro: Não é possível converter implicitamente o tipo ‘ System.Func ‘ para ‘ System.Func ‘ Por que é que? Eu […]

Restrições de atributo em genéricos C #

Eu tenho a seguinte declaração de método: public static bool SerializeObject(string filename, T objectToSerialize){ Quero restringir T a tipos decorados com o atributo [Serializable] . O seguinte não funciona porque “Attribute ‘System.SerializableAttribute’ não é válido neste tipo de declaração. É válido apenas nas declarações ‘Class, Enum, Struct, Delegate’.”: public static bool SerializeObject(string filename, [Serializable] T […]

Argumentos opcionais em um Func genérico

Eu tenho o seguinte método em um assembly: public string dostuff(string foo, object bar = null) { /* … */ } Eu uso isso como um retorno de chamada, portanto, uma referência a ele é passada para outro assembly como tal: Func dostuff Agora, na forma original, posso chamá-lo sem especificar esse segundo argumento, cujo […]