Articles of genéricos

Interfaces genéricas em C # impedem o boxe? (Desempenho do .NET vs Mono)

Eu tenho uma interface c # com determinados parâmetros de método declarados como tipos de object . No entanto, o tipo real passado pode diferir dependendo da class que implementa a interface: public interface IMyInterface { void MyMethod(object arg); } public class MyClass1 : IMyInterface { public void MyMethod(object arg) { MyObject obj = (MyObject) […]

C #: É operador para tipos genéricos com inheritance

Eu tenho um problema com o operador is comparando tipos genéricos. public interface ISomeInterface where T : SomeBaseClass{ } public class SomeClass : SomeBaseClass{ } Agora queremos verificar o tipo com o operador. Temos uma instância de uma interface de implementação de class ISomeInterface. Infelizmente estamos enfrentando o seguinte problema: // someObject is an Instance […]

C # Reflection – Como posso saber se o object o é do tipo KeyValuePair e, em seguida, lançá-lo?

Atualmente, estou tentando escrever um método Dump () do LinqPad equivalente em C # para o meu próprio divertimento. Estou mudando de Java para C # e isso é um exercício, e não um requisito comercial. Eu tenho quase tudo funcionando, exceto para Dumping a Dictionary. O problema é que KeyValuePair é um tipo de […]

Não é possível converter implicitamente o tipo derivado para seu tipo genérico base

Eu tenho as seguintes classs e interfaces: public interface IThing { string Name { get; } } public class Thing : IThing { public string Name { get; set; } } public abstract class ThingConsumer where T : IThing { public string Name { get; set; } } Agora, eu tenho uma fábrica que retornará […]

Operador ‘?’ não pode ser aplicado ao operando do tipo ‘T’

Tentando fazer Feature genérico e, em seguida, de repente, compilador disse Operador ‘?’ não pode ser aplicado ao operando do tipo ‘T’ Aqui está o código public abstract class Feature { public T Value { get { return GetValue?.Invoke(); } // here is error set { SetValue?.Invoke(value); } } public Func GetValue { get; set; […]

Como criar uma coleção personalizada no .NET 2.0

Oi eu quero criar minha coleção personalizada, estou derivando minha class de coleção personalizada da class CollectionBase como abaixo: public class MyCollection : System.Collectio.CollectionBase { MyCollection(){} public void Add(MyClass item) { this.List.Add(item); } } class MyClass { public string name; } Deixe-me fazer algumas perguntas: Se esta abordagem é correta e nova, como eu estou […]

Chamar dinamicamente um método em um destino genérico

Eu tenho uma interface genérica ICommandHandler que terá um número de implementações cada para o processamento de uma implementação específica do ICommand , por exemplo: public class CreateUserCommand : ICommand { … } public class CreateUserCommandHandler : ICommandHandler { … } Quando ICommand um object ICommand , estou tentando enviá-lo dinamicamente para o ICommandHandler correto. […]

c # genérico com pequena diferença para tipos?

Observe as duas extensões, uma para float, uma para Vector3. Observe que há apenas uma pequena diferença no var( call. Em c # poderia ser escrito como um como genérico? A essência da minha pergunta é: dentro de um genérico, você pode ramificar sobre a natureza do tipo? public static IEnumerator Tweeng( this float duration, […]

Como você chama um método genérico se você conhece apenas o parâmetro type em tempo de execução?

Eu tenho esse método: public List SomeMethod( params ) where T : new() Então eu quero chamar isso SomeMethod que é bom se eu souber o tipo: SomeMethod(); Mas se eu tiver apenas o Class1 em tempo de execução, não consigo chamá-lo? Então, como chamar SomeMethod com o tipo T desconhecido? Eu tenho Type usando […]

Por que List não é válido em uma interface covariante MyInterface

Perguntas de acompanhamento para uma pergunta anterior , isso foi identificado como um problema de co-variância. Levando isso um passo adiante, se eu modificar o IFactory seguinte maneira: class Program { static void Main(string[] args) { IFactory factory = new Factory(); } } class Factory : IFactory { } class Product : IProduct { } […]