Articles of interfaccia di

Specifica il membro dell’interfaccia non per nome ma per tipo

Ho un sacco di classi simili generate da svcutil da qualche file WSDL esterno. Qualsiasi class ha una proprietà Header e una proprietà string che ha denominato class name + “1” . Ad esempio, ho classi: SimpleRequest con proprietà Header e SimpleRequest1 . Un altro è ComplexRequest con proprietà Header e ComplexRequest1 . Quindi, voglio […]

Sola lettura e scrivi solo proprietà automatiche in Interfaccia

Avevo letto che le proprietà auto implementate non possono essere solo leggere o scrivere solo. Possono solo essere letti e scritti. Tuttavia, mentre imparavo le interfacce mi sono imbattuto in foll. codice, che crea un tipo di sola lettura / sola scrittura e lettura-scrittura di proprietà automatiche. È accettabile? public interface IPointy { // A […]

C # – Come posso avere un tipo che fa riferimento a qualsiasi object che implementa un insieme di interfacce?

Come posso avere un riferimento al tipo che si riferisce a qualsiasi object che implementa un insieme di interfacce? Ad esempio, posso avere un tipo generico come questo: Giava: public class Foo { } C # public class Foo where T : A, B { } Ecco come avere un tipo generico di class. Tuttavia, […]

Chiamare un metodo generico con istanze di interfaccia

Come una domanda successiva a questo public interface IFeature { } public class FeatureA : IFeature { } IFeature a = new FeatureA(); Activate(a); private static void Activate(TFeature featureDefinition) where TFeature : IFeature { } Ho capito, una volta che la FeatureA è stata IFeature su IFeature il metodo generico avrà sempre IFeature come parametro […]

C # Hack: differenza di basso livello tra interfaccia e class astratta

Questa è una domanda filosofica sui fondamenti di C #: mi chiedo quanto una simile interfaccia possa essere simulata da una class completamente astratta. Supponiamo di avere l’interfaccia seguente: public interface INativeInterface { void PerformAction(); String Property { get; set; } } E seguendo la class astratta: public abstract class ISimulatedInterface { public abstract void […]

Utilizza un’interfaccia da un assieme esterno contrassegnato come “interno” (C #)

Mi piacerebbe implementare un’interfaccia che risiede in un assembly esterno. Tuttavia quella particolare interfaccia è stata contrassegnata come “interna”. C’è un modo in cui posso ancora implementare questa interfaccia per le mie classi? So come chiamare i metodi privati ​​/ interni usando il reflection in C #, quindi penso che anche in questo caso si […]

Aggiunta di eventi a un’interfaccia / implementazione

Sapere questo è stato chiesto prima, tuttavia la mia domanda è leggermente diversa. Ho un’interfaccia: IEmailDispatcher Sembra questo: public interface IEmailDispatcher { void SendEmail(string[] to, string fromName, string fromAddress, string subject, string body, bool bodyIsHTML, Dictionary Attachments); } Come un po ‘di background: Ho una class EmailDispatcher statica che ha il metodo: SendEmail (stringa [] […]

La class eredita il dizionario generico e Interface

Ho una class che eredita un dizionario generico e un’interfaccia public class MyDictionary: Dictionary, IMyDictionary { } il problema è che i consumatori di questa class stanno cercando le proprietà “.Keys” e “.Values” dell’interfaccia, quindi ho aggiunto: /// /// /// ICollection Keys { get; } /// /// /// IEnumerable Values { get; } all’interfaccia. Ora, […]

C’è un modo per forzare una class derivata ad implementare una class astratta o un’interfaccia annidata nella class base?

Ho questa class astratta: public abstract class Task { public string ID {get; set;} public string Name {get; set;} public abstract class Options{}; public abstract void Execute(); } Ho altre classi che estendono questa class: public class Copy : Task { public override void Execute() { Console.Write (“running”); } } Mi piacerebbe che ogni class […]

In che modo le implementazioni dell’interfaccia devono gestire le eccezioni interne impreviste dei tipi che i chiamanti potrebbero aspettarsi?

Se una class implementa un’interfaccia, come dovrebbe gestire le situazioni in cui entrambi Nell’esecuzione di un metodo o una proprietà, si verifica un errore interno che è di un tipo che un chiamante potrebbe ragionevolmente aspettarsi di gestire, ma che un chiamante forse non dovrebbe. Ad esempio, IDictionary.Add esegue qualcosa internamente che produce un’eccezione Argument […]