type net from español create c# .net reflection asp.net-core .net-core

net - reflection c# español



Usando Reflection en.NET Core (3)

Respuesta corta

¿Qué estoy haciendo mal?

Está intentando acceder a miembros que están disponibles en .NET 4.5.1 pero no en 5.4.

4.x Workaround in 5.x/Core Delegate.Method. Delegate.GetMethodInfo() Type.BaseType. Type.GetTypeInfo() Type.FilterName - Type.InvokeMember - Type.FindMembers -

Recortar directamente desde Visual Studio.

Visual Studio nos dice esto si pasamos el mouse sobre el error.

Informe de portabilidad .NET

También vale la pena mirar el Analizador de Portabilidad .NET . Es una extensión que podemos instalar desde la Galería de Visual Studio .

Ejecutarlo nos dice, por ejemplo, que Type.BaseType no está disponible y recomienda una solución.

Para el desarrollo multiplataforma, estoy tratando de hacer una biblioteca compartida .NET Core. Utilicé la plantilla de proyecto Class Library (package) en VS 2015. Mi biblioteca necesita usar un par de mecanismos de reflexión con los que estoy familiarizado en el marco completo de .net 4, pero ahora no sé cómo acceder a estos en un .NET Core biblioteca. Específicamente:

  • El tipo de Delegate tiene una propiedad de Method que devuelve un objeto MethodInfo .
  • La clase Type tiene una propiedad BaseType , una propiedad FilterName , InvokeMember método FindMembers y FindMembers método FindMembers que no puedo alcanzar en .NET Core.

Agregué paquetes de NuGet que supuestamente tienen las piezas de reflexión que necesito:

"frameworks": { "net451": { "dependencies": { "System.Reflection": "4.1.0-beta-23516", "System.Reflection.Extensions": "4.0.1-beta-23516", "System.Reflection.Primitives": "4.0.1-beta-23516", } }, "dotnet5.4": { "dependencies": { "Microsoft.CSharp": "4.0.1-beta-23516", "System.Collections": "4.0.11-beta-23516", "System.Linq": "4.0.1-beta-23516", "System.Reflection": "4.1.0-beta-23516", "System.Reflection.Extensions": "4.0.1-beta-23516", "System.Reflection.Primitives": "4.0.1-beta-23516", "System.Runtime": "4.0.21-beta-23516", "System.Threading": "4.0.11-beta-23516" } } }, "dependencies": { "System.Reflection.TypeExtensions": "4.1.0-beta-23516" }

También agregué el using System.Reflection , pero todavía recibo errores que indican que estas propiedades y tipos no están definidos.

¿Qué estoy haciendo mal?

En caso de que sea relevante, en esta misma máquina el comando dnvm list muestra:

Active Version Runtime Architecture OperatingSystem Alias ------ ------- ------- ------------ --------------- ----- 1.0.0-rc1-update1 clr x64 win 1.0.0-rc1-update1 clr x86 win 1.0.0-rc1-update1 coreclr x64 win * 1.0.0-rc1-update1 coreclr x86 win default

Lo anterior es exactamente lo que quiero ... o al menos lo que creo que quiero. ;)


Estoy usando .net Core 1.0. Intente seguir un fragmento de project.json y ver si funciona para usted. También me he dado cuenta de que está utilizando la API beta, por lo que, si es posible, manténgase alejado de la beta.

{ "version": "1.0.0-*", "compilationOptions": { "emitEntryPoint": true }, "dependencies": { "NETStandard.Library": "1.0.0-rc2-23811", "System.Reflection.TypeExtensions": "4.0.0" }, "frameworks": { "dnxcore50": { } } }