-1
我有類:反思與對.NET核心屬性拒絕合作
public class Domain
{
public static Assembly[] GetAssemblies()
{
var assemblies = new List<Assembly>();
foreach (ProcessModule module in Process.GetCurrentProcess().Modules)
{
try
{
var assemblyName = AssemblyLoadContext.GetAssemblyName(module.FileName);
var assembly = Assembly.Load(assemblyName);
assemblies.Add(assembly);
}
catch (BadImageFormatException)
{
// ignore native modules
}
}
return assemblies.ToArray();
}
}
我的主類的樣子:
class Program
{
public static Dictionary<String, Type> animals;
static void Main(string[] args)
{
var assTab = Domain.GetAssemblies();
foreach (var assembly in assTab)
{
var m = assembly.GetCustomAttribute<Method>();
if (m != null)
{
animals.Add(m.Name, assembly.GetType());
}
}
凡採用方法是MethodAttribute
類。在Animal.dll
我有類似狗,貓等屬性[Method("cat")]
等。在我的詞典中,我想將此屬性名稱添加爲字符串,並鍵入類型(dog, Dog)
依此類推。我的問題是我的程序不這樣做。運行可變動物程序後,我有0分。我應該改變什麼來實現我想要的?
但現在看不到我的dll。我將項目動物設置爲類庫,並在Main中添加對它的引用。但現在我的代碼由您執行無限:( – nju
)您可以說明您的意思是在無窮遠處執行嗎?即它卡在哪一行或者它的循環是什麼循環?我的代碼只有一個foreach在它不應該被卡住...如果你還沒有,你應該使用調試器來找出它現在出了什麼問題,我的猜測是,它在某個地方後面,你遇到問題而且你之前在字典中沒有任何東西,這就是爲什麼你現在只能得到這個問題。 – Chris
當我調試我的代碼時,我看到動物在裝配表中。在動物中,我有類Dog [Method('dog)] 。但是當我添加你的代碼並開始調試時,它沒有看到像Animal這樣的東西只是遍歷其他程序集 – nju