Articles of extension methods

Posibles trampas del uso de esta taquigrafía (basada en el método de extensión)

C # 6 Actualización En C # 6 ?. ahora es una función de idioma : // C#1-5 propertyValue1 = myObject != null ? myObject.StringProperty : null; // C#6 propertyValue1 = myObject?.StringProperty; La pregunta a continuación todavía se aplica a las versiones anteriores, pero si desarrolla una nueva aplicación utilizando la nueva ?. el operador […]

Sintaxis de los métodos de extensión frente a la syntax de la consulta

Estoy tratando de entender si hay un buen momento para usar palabras clave linq estándar o métodos de extensión linq con expresiones lambda. Parece que hacen lo mismo, simplemente están escritos de manera diferente. ¿Es puramente una cuestión de estilo? var query = from p in Products where p.Name.Contains(“foo”) orderby c.Name select p; // or […]

¿Por qué no Incluir tiene algún efecto?

Estoy haciendo la siguiente consulta LINQ que funciona pero no devuelve la propiedad de navegación Persona llena, obtengo 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; } […]

Métodos de extensión estáticos

Posible duplicado: ¿Puedo agregar métodos de extensión a una clase estática existente? ¿Hay alguna manera de que pueda agregar un método de extensión estático a una clase? específicamente quiero sobrecargar Boolean.Parse para permitir un argumento int.

¿Puedo “multiplicar” una cuerda (en C #)?

Supongamos que tengo una cadena, por ejemplo, string snip = “”; Quiero básicamente escribirlo varias veces, dependiendo de algún valor entero. string snip = “”; int multiplier = 2; // TODO: magic code to do this // snip * multiplier = “”; EDITAR: Sé que puedo escribir fácilmente mi propia función para implementar esto, me […]

En C #, ¿qué sucede cuando llamas a un método de extensión en un objeto nulo?

¿El método se llama con un valor nulo o da una excepción de referencia nula? MyObject myObject = null; myObject.MyExtensionMethod(); // <– is this a null reference exception? Si este es el caso, nunca necesitaré verificar mi parámetro ‘this’ para null?

¿Imposible utilizar ref y out para el primer parámetro (“this”) en los métodos de extensión?

¿Por qué está prohibido llamar al Extension Method con el modificador de ref ? Este es posible: public static void Change(ref TestClass testClass, TestClass testClass2) { testClass = testClass2; } Y este no: public static void ChangeWithExtensionMethod(this ref TestClass testClass, TestClass testClass2) { testClass = testClass2; } ¿Pero por qué?

Tipos anónimos: ¿hay alguna característica especial?

¿Hay algo que usar para determinar si un tipo es realmente de tipo anónimo? Por ejemplo, una interfaz, etc. El objective es crear algo como lo siguiente … //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 = […]

Convierte cadena a tipo anulable (int, double, etc …)

Estoy intentando hacer una conversión de datos. Desafortunadamente, gran parte de la información está en cadenas, donde debería ser int o doble, etc. Entonces, lo que tengo es algo así como: double? amount = Convert.ToDouble(strAmount); El problema con este enfoque es si strAmount está vacío, si está vacío, quiero que importe para que sea nulo, […]

¿Cómo funcionan los métodos de extensión?

Quiero hacer un método de extensión en Unity3d para la clase Vector3. Pero parece que no lo entiendo. Esto es lo que tengo: public static class ExtensionMethods{ public static Vector3 MaxValue(this Vector3 _vec3) { return new Vector3(float.MaxValue,float.MaxValue,float.MaxValue); } } Ahora quiero hacer un Vector3.MaxValue igual que float.MaxValue con esta línea de código: Vector3 closestPoint = […]