Articles of extension methods

Sintassi dei metodi di estensione e syntax delle query

Sto cercando di capire se c’è un buon tempo per usare le parole chiave standard linq oi metodi di estensione linq con espressioni lambda. Sembra che facciano la stessa cosa, solo che sono scritti in modo diverso. È puramente una questione di stile? var query = from p in Products where p.Name.Contains(“foo”) orderby c.Name select […]

Perché Includi non ha alcun effetto?

Sto facendo la seguente query LINQ che funziona ma non restituisce la proprietà di navigazione Persona riempita, ottengo null . public IEnumerable GetSharePeopeByCarId(int carId) { return from q in _context.Cars join s in _context.Shares on q.CarId equals s.Car.CarId join p in _context.SharePeople.Include(p => p.Person) on s.ShareId equals p.ShareId where q.CarId == carId select p; } […]

Metodi di estensione statica

Possibile duplicato: Posso aggiungere metodi di estensione a una class statica esistente? C’è un modo per aggiungere un metodo di estensione statico a una class. in particolare voglio sovraccaricare Boolean.Parse per consentire un argomento int.

Posso “moltiplicare” una stringa (in C #)?

Supponiamo che io abbia una stringa, per esempio, string snip = “”; Voglio fondamentalmente scriverlo più volte, a seconda di alcuni valori interi. string snip = “”; int multiplier = 2; // TODO: magic code to do this // snip * multiplier = “”; EDIT: So che posso facilmente scrivere la mia funzione per implementare […]

In C #, cosa succede quando chiami un metodo di estensione su un object nullo?

Il metodo viene chiamato con un valore nullo o fornisce un’eccezione di riferimento null? MyObject myObject = null; myObject.MyExtensionMethod(); // <– is this a null reference exception? Se questo è il caso, non avrò mai bisogno di controllare il mio parametro ‘this’ per null?

Imansible usare ref e out per il primo parametro (“questo”) nei metodi di estensione?

Perché è vietato chiamare il Extension Method con il modificatore di ref ? Questo è ansible: public static void Change(ref TestClass testClass, TestClass testClass2) { testClass = testClass2; } E questo no: public static void ChangeWithExtensionMethod(this ref TestClass testClass, TestClass testClass2) { testClass = testClass2; } Ma perché?

Tipi anonimi – Esistono caratteristiche di distinzione?

C’è qualcosa da usare, per determinare se un tipo è in realtà un tipo anonimo? Ad esempio un’interfaccia, ecc.? L’objective è creare qualcosa come il seguente … //defined like… public static T Get(this IAnonymous obj, string prop) { return (T)obj.GetType().GetProperty(prop).GetValue(obj, null); } //… //And then used like… var something = new { name = “John”, […]

Converti stringa in tipo nullable (int, double, ecc …)

Sto tentando di eseguire una conversione dei dati. Sfortunatamente, gran parte dei dati è in stringhe, dove dovrebbe essere int o double, ecc … Quindi quello che ho è qualcosa di simile: double? amount = Convert.ToDouble(strAmount); Il problema con questo approccio è se strAmount è vuoto, se è vuoto, voglio che diventi nullo, quindi quando […]

Come funzionano i metodi di estensione?

Voglio fare un metodo di estensione in Unity3d per la class Vector3. Ma non sembra proprio che lo capisca. Questo è quello che ho: public static class ExtensionMethods{ public static Vector3 MaxValue(this Vector3 _vec3) { return new Vector3(float.MaxValue,float.MaxValue,float.MaxValue); } } Ora voglio creare un Vector3.MaxValue come float.MaxValue con questa riga di codice: Vector3 closestPoint = […]

Nessuna inferenza di tipo con metodo di estensione generico

Ho il seguente metodo: public static TEventInvocatorParameters Until (this TEventInvocatorParameters p, Func breakCond) where TEventInvocatorParameters : EventInvocatorParameters where TEventArgs : EventArgs { p.BreakCondition = breakCond; return p; } E questa class public class EventInvocatorParameters where T : EventArgs { public Func BreakCondition { get; set; } // Other properties used below omitted for brevity. } […]