是否可以获得属性分配到的类的名称?
目前我有类似的东西,但模式是相同的。所以我想避免使用文字并从类名中获取 。
[Foo("BAR")]
public class BarData
{
}
这个问题对我来说不是很清楚,所以我会尽力回答。让我们假设我们有以下
NameAttribute
[AttributeUsage(AttributeTargets.Class)]
public class NameAttribute(string input) : Attribute {
public string Input { get; } = input;
}
[Name("Something1")]
public class Class1 { }
[Name("Something2")]
public class Class2 { }
以下是获取所有类型的方法。
// This set will contain all the types
var set = new HashSet<Type>();
// Get all the assemblies in the current AppDomain
var allAssemblies = AppDomain.CurrentDomain.GetAssemblies();
// Select all types from all assemblies
foreach (var type in allAssemblies.SelectMany(a => a.GetTypes())) {
var nameAttr = type.GetCustomAttribute<NameAttribute>();
// If it has attrbiute add to the set
if (nameAttr != null) {
set.Add(type);
}
}
// Print out all the names
foreach (var type in set) {
Console.WriteLine($"ClassName:{type}");
}