vistas tablas rendimiento query para optimizar optimizacion lento grandes eficientes datos consultas cantidades c# type-parameter

c# - tablas - ¿Se puede reducir el número de parámetros de tipo?



tablas grandes mysql (1)

Encuentro molesto que uno tenga que especificar los tipos de Foo y FooFactory en la llamada a RunTest a continuación. Después de todo, si la prueba conoce el tipo de Fábrica, está implícito el tipo que está creando la Fábrica. Suponiendo que quiero realizar muchas pruebas de fábrica diferentes para fábricas de diferentes clases, eso es una gran cantidad de paréntesis angulares, y empeora con las jerarquías de tipos más ricas. Me pregunto si es posible reestructurar esto para que la prueba sea más concisa.

public class Foo { } public interface IFactory<T> { T Create(); } public class FooFactory : IFactory<Foo> { public Foo Create() => new Foo(); } public class FactoryTest { internal void RunTest<TFactory, T>(TFactory factory) where TFactory : IFactory<T> { T t = factory.Create(); Assert.NotEqual(default(T), t); } [Fact] public void FooFactoryWorks() { RunTest<FooFactory, Foo>(new FooFactory()); } }


No está claro si TFactory tiene que ser un parámetro de tipo. Yo escribiría esto:

internal void RunTest<T>(IFactory<T> factory) { T t = factory.Create(); Assert.NotEqual(default(T), t); }

Entonces puedes usar:

RunTest(new FooFactory());

como Foo puede ser inferido por el compilador.