Articles of generici

Membri generici di class in C #?

Ehi, penso di avere un’idea sbagliata qui, ma non sono sicuro di cosa sia meglio. Voglio una class con una variabile membro che può essere di qualsiasi tipo, a seconda di cosa è necessario al momento. Finora, ho qualcosa di simile a questo: public class ConfigSetting { private T value; public T GetValue() { return […]

Vincolo generico: imponi il tipo per avere funzione statica e costruttore con parametri

So che puoi scrivere: class GenericClass where T : new() { } per far sì che T abbia un costruttore vuoto. Le mie Qs sono: puoi affermare che T ha un costruttore con un tipo specifico di parametro? Piace: class SingletonFactoryWithEmptyConstructor where T : new(int) puoi affermare che T ha una funzione statica (diciamo, void […]

Restituzione del valore nullo dal metodo generico

Quindi ho questo metodo: internal K GetValue(T source, string col) where T : IBaseObject { string table = GetObjectTableName(source.GetType()); DataTable dt = _mbx.Tables[table]; DataRow[] rows = dt.Select(“ID = ” + source.ID); if (rows.Length == 0) return K; return (K) rows[0][col]; } Voglio essere in grado di restituire un valore null, o una sorta di valore […]

Come ottenere un ReadOnlyCollection delle chiavi in ​​un dizionario

La mia class contiene un Dictionary dict e voglio esporre un ReadOnlyCollection delle chiavi. Come posso fare questo senza copiare il Dictionary.KeyCollection dict.Keys in un array e quindi esponendo l’array come ReadOnlyCollection ? Voglio che ReadOnlyCollection sia un vero wrapper, es. per riflettere i cambiamenti nel dizionario sottostante e, a quanto ho capito, copiare la […]

Perché non posso avere un vincolo di tipo di object

Sto cercando di configurare IDictionary personalizzato che consentirà Object come mio TValue. Ecco come appare: public class NullTolerantDictionary : Dictionary where TValue : class { public TValue this[TKey key] { get { TValue value; if (TryGetValue(key, out value)) { return value; } else { return DependencyProperty.UnsetValue; } } } } Quando questo compila, dice: Imansible […]

Iniettore semplice – Registra decoratore con un’altra dipendenza dello stesso tipo generico

Penso di essermi imbattuto in una stranezza in Simple Injector’s RegisterDecorator() . Si verifica anche nel 2.5.0 più recente. Ho una situazione in cui voglio decorare un tipo generico chiuso, ad esempio ICommandHandler , con un decoratore che accetta (tramite iniezione del costruttore) un gestore interno di tipo ICommandHandler , ma anche un altro tipo […]

È ansible utilizzare un elenco di generici non tipizzati in C #?

Sto provando il seguente disegno senza successo: abstract class Foo { abstract T Output { get; } } class Bar { List Foos; } Non mi piacerebbe usare un elenco di array, perché dovrei usare cast non sicuri per ottenere il tipo. Vorrei che Foo venisse digitato in modo che “Output” non fosse solo un […]

Problema di sovraccarico del metodo C # con class derivata da una class astratta generica

Sto lavorando a un progetto e ho un tipo astratto generico che accetta un parametro di tipo derivato esso stesso dal tipo astratto. Se vuoi sapere perché lo farei, ti preghiamo di vedere questa domanda . Ho incontrato un problema interessante con l’overload di un metodo in una class derivata definita nella class astratta. Ecco […]

C # e generici – perché il metodo nella class base viene chiamato al posto del nuovo metodo nella class derivata?

Se l’argomento di tipo generico (di una class chiamante o di un metodo di chiamata) è vincolato con where T : Base il nuovo metodo in T == Derivato non viene chiamato, viene invece chiamato il metodo in Base. Perché il tipo T è ignorato per la chiamata al metodo anche se dovrebbe essere noto […]

Memoria contigua che memorizza equivoci in.net?

http://msdn.microsoft.com/en-us/library/ms379570(v=vs.80).aspx So che gli Arrays in .net sono archiviati in modo contiguo . (in mem) So anche che List non lo è. (beh … non tutti i tipi di lista … vedi alla mia 2ª domanda) Da qui ho 2 domande So che dopo 4,8,16 … inserisce elementi in una lista – la lista si […]