Rya*_*yan 4 c# reflection structure dynamic
我已经看到很多关于从字符串中实例化类的问题但是却无法以相同的方式找到有关创建结构的任何信息.
我有一个包含如下结构的类:
Public Structure callDetails
Public GUID As Guid
Public ringTime as Date
Public CBN As String
Run Code Online (Sandbox Code Playgroud)
等等
我真正想做的就是从结构中获取字段名称.我不在乎操纵字段中的数据.
到目前为止,我可以非常接近这一点.
callDetails callTableDef= new callDetails();
Type tableType = callTableDef.GetType();
object tableStruct = (object)Activator.CreateInstance(tableType);
System.Reflection.FieldInfo[] fields = tableType.GetFields();
foreach (System.Reflection.FieldInfo field in fields)
Debug.WriteLine(field.Name + " = " + field.GetValue(tableStruct));
Run Code Online (Sandbox Code Playgroud)
但是,我仍然需要使用实际名称创建结构的实例.我希望能够传入这样的字符串:
Type tableType = System.Type.GetType("callDetails");
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我从Activator.CreateInstance()得到一个ArgumentNullException
是不是getType应该查找作为字符串传递给它的值并返回类型?
我是C#的新手,在这个项目之前主要用Java编程.
您必须使用其命名空间限定类型名称:
Type tableType = System.Type.GetType("mynamespace.callDetails");
Run Code Online (Sandbox Code Playgroud)
如果它位于不同的程序集中,则需要程序集限定名称.可以在MSDN上找到详细信息.只有您拥有的类型名称,它将无法解析并将返回null,因此您的参数为null异常.