Articles of genéricos

interface como argumento ou método genérico com onde – qual é a diferença?

Existe alguma diferença entre: public void Method1(class1 c, T obj) where T:Imyinterface E public void Method2(class1 c, Imyinterface obj) ? Quais são os benefícios de usar o primeiro método?

É uma variável de membro estático comum para todas as instanciações genéricas de C #?

Em c # eu tenho uma class genérica: public class MyGeneric where ParameterClass: MyGenericParameterClass, new() { public static int Variable; } Agora, em C ++, se eu instanciasse uma class modelo com parâmetros diferentes, cada class completa teria sua própria Variable , então eu não posso dizer MyGeneric.Variable = 1; // invalid in C++ em […]

nameof com tipos genéricos

Eu estou tentando obter o nome de um método em uma interface genérica. Eu esperaria que isso funcionasse como a parte do tipo seria um typeof válido: //This does not compile nameof(IGenericInterface.Method) //This would compile typeof(IGenericInterface) Eu acho que isso deve ser válido C # 6 ou estou faltando alguma coisa ou é a melhor […]

Criar instância da class genérica com o parâmetro de tipo genérico dynamic

Eu preciso criar uma instância de uma class genérica como esta: Type T = Type.GetType(className).GetMethod(functionName).ReturnType; var comparer = new MyComparer(); // ERROR: “The type or namespace name ‘T’ could not be found” Eu encontrei esta resposta onde isso é possível apenas com reflection. Mas usando o reflexo obtenho o object que preciso transmitir para o […]

LINQ contra dois contextos de dados diferentes usando interfaces

Esta é a continuação da minha pergunta aqui . Breve resumo: Eu tenho dois bancos de dados diferentes com alterações mínimas (uma tabela e foreign keys estão faltando em uma tabela) e eu quero meu utilitário de importação que usa Linq-To-Sql para poder preencher os dois bancos de dados com dados sem duplicação de a […]

C # Classe genérica vs methods genéricos

Qual é a vantagem de fazer uma class genérica como se opor a apenas tornar o método genérico? Sob qual circunstância você usaria uma class genérica?

Erro de conversão do tipo C # apesar da restrição genérica

Por que, com uma restrição genérica no parâmetro de tipo T da class P de “deve herdar de A”, a primeira chamada é bem-sucedida, mas a segunda chamada falha com o erro de conversão de tipo detalhado no comentário: abstract class A { } static class S { public static void DoFirst(A argument) { } […]

Quando devo ou não devo estar usando restrições de tipo genérico?

Eu tenho uma class base: public abstract class StuffBase { public abstract void DoSomething(); } E duas classs derivadas public class Stuff1 : StuffBase { public void DoSomething() { Console.WriteLine(“Stuff 1 did something cool!”); } public Stuff1() { Console.WriteLine(“New stuff 1 reporting for duty!”); } } public class Stuff2 : StuffBase { public void DoSomething() […]

Restrição genérica ambígua T: class vs T: struct

Esse código gera um erro do compilador que o membro já está definido com os mesmos tipos de parâmetro. private T GetProperty(Func GetFunc) where T:class { try { return GetFunc(Properties.Settings.Default); } catch (Exception exception) { SettingReadException(this,exception); return null; } } private TNullable? GetProperty(Func GetFunc) where TNullable : struct { try { return GetFunc(Properties.Settings.Default); } catch […]

Método genérico C # com restrição de número inteiro se recusa a converter de inteiro para o tipo genérico

Se eu tenho um método genérico que é restrito ao tipo ‘int’ então certamente eu deveria ser capaz de converter um inteiro para o tipo T genérico. Por exemplo… public T ExampleMethod(int unchanged) where T : int { return (T)unchanged; } … o compilador reclama que Não é possível converter o tipo ‘int’ para ‘T’, […]