Hace poco tomé el proyecto de crear una herramienta para LinqPad que arrojaría los resultados de la consulta al formato CSV para usar la herramienta en bases de datos masivas para obtener resultados rápidos. Una cosa que quería de la herramienta es que pueda funcionar en Visual Studio y LinqPad. Por lo tanto, si estaba usando LinqtoSQL en VS2010, o LinqPad, podría volcar los resultados rápidamente a un archivo csv, y luego abrirlo en Excel para ver los resultados.¿Por qué LinqPad crea campos en lugar de propiedades?
El mayor inconveniente en el proyecto provino de cómo LinqPad construye sus DataContexts y cómo Visual Studio construye sus DataContexts. La mejor información que pude encontrar sobre cómo lo hace LinqPad proviene del here. Básicamente, lo que encontré en mi proyecto fue que VS2010 crea propiedades para sus DataContexts, pero LinqPad crea Fields. Por lo tanto cuando se utiliza la reflexión:
LINQPad:
dataContextType.GetProperties() //returns 0
dataContextType.GetFields() //returns the Fields from LinqPad created DataContext
VS 2010 LinqToSql:
dataContextType.GetProperties() //returns the Properties from VS created DataContext
dataContextType.GetFields() //returns 0
Entonces, ¿por qué utiliza LINQPad campos en lugar de en sus propiedades DataContexts? ¿No hubiera sido más factible copiar el patrón de Visual Studio LinqToSQL?
actualización
Sobre la base de un comentario que decidí hacer la misma pregunta en el LinqPad forum también.
¿No debería dirigirse esto a los autores de LinqPad? : D En cualquier caso, tanto FieldInfo como PropertyInfo heredan de MemberInfo, por lo que puede reescribir su código para manejar ambos casos (con un poco de ajuste). – Jonas
@Jonas Todavía es buena información para StackOverFlow. Y a pesar de que ambos heredan de MemberInfo, ambos tienen diferentes métodos de GetValue(), que debo hacer uso de ambos. – jsmith