c# - 从 Activator.CreateInstance 对象获取变量/属性?

标签 c#

这是我的代码:

public class Test
{
   string a;
   int b;
}

public class Test2
{
   string c;
   string d
   int e;
}

我正在将它编译为 DLL 并使用以下命令提取这两个类:

var library = Assembly.LoadFrom(libraryPath);
IEnumerable<Type> types = library.GetTypes();

然后是“foreach type in types”,我想获取我的变量列表,但不知道该怎么做......我正在尝试:

var lib = Activator.CreateInstance(type);
Type myType = lib.GetType();
IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties());

foreach (PropertyInfo prop in props)
{
    // Do something with propValue
}

“ Prop ”一直是空的...

有什么帮助吗?

最佳答案

您的类没有指定任何属性。他们指定私有(private)字段。这意味着:

  • 您需要调用 GetFields,而不是 GetProperties
  • 您需要指定BindingFlags.NonPublic | BindingFlags.Instance 以便为您提供非公开实例字段

当然,您也可以将类更改为具有公共(public)属性。

关于c# - 从 Activator.CreateInstance 对象获取变量/属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035400/

相关文章:

c# - 将 Env Conn String 注入(inject) .NET Core 2.0 w/EF Core DbContext 与 Startup prj 不同的类库中并实现 IDesignTimeDbContextFactory

c# - Azure Windows 事件日志级别

c# - System.ArgumentException : Object is not an ADODB. RecordSet 或 ADODB.Record

c# - 取消 PreviewKeyDown

c# - For循环和Foreach连续循环?

c# - 从文本文件加载数据然后将其存储到数据库的最快方法

c# - 当 .NET 只依赖于参数时,我应该使用委托(delegate)还是方法?

javascript - 从 JavaScript POST 重新加载 Razor 页面

c# - .NET 服务系统.Net.Sockets.SocketException : 'No such host is known'

c# - 如何创建打开本地文件的链接?