Articles of interfaccia di

Come faccio a sapere quando un’interfaccia viene implementata direttamente in un tipo ignorando quelli ereditati?

Il problema appare quando ho una class che implementa un’interfaccia e si estende una class che implementa un’interfaccia: class Some : SomeBase, ISome {} class SomeBase : ISomeBase {} interface ISome{} interface ISomeBase{} Poiché typeof (Some) .GetInterfaces () restituisce e array con ISome e ISomeBase, non sono in grado di distinguere se ISome è implementato […]

Come posso utilizzare la riflessione per trovare le proprietà che implementano un’interfaccia specifica?

Considera questo esempio: public interface IAnimal { } public class Cat: IAnimal { } public class DoStuff { private Object catList = new List(); public void Go() { // I want to do this, but using reflection instead: if (catList is IEnumerable) MessageBox.Show(“animal list found”); // now to try and do the above using reflection… […]

Marcatura esplicita della class derivata come interfaccia di implementazione della class base

interface IBase { string Name { get; } } class Base : IBase { public Base() => this.Name = “Base”; public string Name { get; } } class Derived : Base//, IBase { public Derived() => this.Name = “Derived”; public new string Name { get; } } class Program { static void Main(string[] args) { […]

Come denominare un’interfaccia quando la parola base inizia con un I?

Voglio creare un’interfaccia per “Articoli”. Tipicamente chiamerei un’interfaccia aggiungendo il prefisso “I” a una parola base. Ma in questo caso la mia parola base inizia già con una I. Ecco un paio di idee che ho avuto IItem : Due I Iitem : varia il caso ItemInterface : ignora il prefisso I e scrive l’interfaccia […]

Vai al metodo implementato piuttosto che all’interfaccia

Spesso durante la navigazione del codice, mi imbatto in qualcosa del genere: public class Fruity { private IOrange _Orange; public Fruity() { _Orange = new Orange() as IOrange; } public void PrepareFruit() { return _Orange.Peel(); } } Ottimo, quindi ora voglio vedere come viene implementato il metodo Peel. Facendo clic con il pulsante destro del […]

Aggiungi ‘set’ alle proprietà dell’interfaccia in C #

Sto cercando di “estendere” un’interfaccia fornendo accessi alle proprietà in quell’interfaccia. L’interfaccia ha un aspetto simile a questo: interface IUser { string UserName { get; } } Voglio qualcosa del genere: interface IMutableUser : IUser { string UserName { get; set; } } Ho bisogno dell’eredità. Non riesco a copiare il corpo di IUser in […]

IList e IReadOnlyList

Se ho un metodo che richiede un parametro che, Ha una proprietà Count Ha un indice intero (get-only) Quale dovrebbe essere il tipo di questo parametro? Io sceglierei IList prima di .NET 4.5 poiché non c’era altra interfaccia di raccolta indicizzabile per questo e gli array lo implementano, il che è un grande vantaggio. Ma […]

Perché chiamare un’implementazione esplicita dell’interfaccia su un tipo di valore fa sì che sia in box?

La mia domanda è in qualche modo correlata a questa: in che modo un vincolo generico impedisce il pugilato di un tipo di valore con un’interfaccia implicitamente implementata? , ma diverso perché non dovrebbe aver bisogno di un vincolo per farlo perché non è affatto generico. Ho il codice interface I { void F(); } […]

Eredita da una class base generica, applica un vincolo e implementa un’interfaccia in C #

Questa è una domanda sulla syntax. Ho una class generica che eredita da una class base generica e applica un vincolo a uno dei parametri del tipo. Voglio anche che la class derivata implementa un’interfaccia. Per la vita di me, non riesco a capire la syntax corretta. Questo è quello che ho: DerivedFoo : ParentFoo […]

Perché prefisso i nomi delle interfacce C # con un “I”

Qual è la logica dietro questa convenzione di denominazione? Non vedo alcun beneficio. Il prefisso aggiuntivo limita semplicemente l’API. Il mio pensiero è in linea con la risposta di Konrad a questa domanda correlata; la risposta scelta di cui è per lo più ciò che sto chiedendo qui.