J'ai besoin d'une instance de classe à partir d'une chaîne pour vérifier si elle possède un certain attribut. Je l'ai essayé comme çaObtenir une instance de classe de manière dynamique dans .NetCore
Type type = Assembly.GetEntryAssembly().GetType("ClassName");
object entity = Activator.CreateInstance(type);
var tableAttribute = entity.GetType().GetTypeInfo().GetCustomAttribute<TableAttribute>();
mais le type est nul?
Code entier à TestConsoleApp:
using System;
using System.ComponentModel;
using System.Reflection;
namespace AssemblyTest
{
[Description("TestDescription")]
public class TestClass { }
//
public class Program
{
public static void Main(string[] args)
{
Type type = Assembly.GetEntryAssembly().GetType("TestClass");
if(type == null)
Console.WriteLine("Object type is NULL.");
else
Console.WriteLine("Object type has value.");
object entity = Activator.CreateInstance(type);
var tableAttribute = entity.GetType().GetTypeInfo().GetCustomAttribute<DescriptionAttribute>();
}
}
}
Etes-vous sûr que votre type est dans l'assemblage actuel et non dans un autre assemblage? –
C'est le même projet. Il suffit de créer un nouveau projet -> .NET Core -> Application console. Je l'ai nommé AssemblyTest et j'ai mis à jour la question en ajoutant le code entier. – borisdj