【问题标题】:How do I get data type of property in a class through Reflection C#如何通过反射 C# 获取类中属性的数据类型
【发布时间】:2014-11-12 06:50:36
【问题描述】:

我有一个名为MyNamespace.Demo1 的命名空间,一个名为STClass 的静态类,以及该类中的一个名为prpAssm 的属性。如何获取属性prpAssm的数据类型?

【问题讨论】:

    标签: c# .net properties .net-assembly system.reflection


    【解决方案1】:
    Type classType = typeof(STClass);
    PropertyInfo propertyInfo = classType.GetProperty("prpAssm");
    Type propertyType = propertyInfo.PropertyType;
    

    如果该类在另一个项目中,您应该加载程序集。

    var assembly = Assembly.LoadFrom(@"MyNamespace.Demo1.dll");
    Type classType = assembly.GetType("MyNamespace.Demo1.STClass");
    PropertyInfo propertyInfo = classType.GetProperty("prpAssm");
    Type propertyType = propertyInfo.PropertyType;
    

    BR

    【讨论】:

    • 如果类名是动态的怎么办? @马蒂亚斯
    • Type classType = Type.GetType("MyNamespace.Demo1.STClass"); 但是你为什么想要那样的东西
    • 是的。但是当我这样做时,@Matthias
    • 您的班级在另一个项目中吗?那么你应该加载程序集。使用Assembly.LoadFrom(...) 而不是Assembly.LoadFile 例如var assembly = Assembly.LoadFrom(@"MyNamespace.Demo1.dll"); Type classType = assembly.GetType("MyNamespace.Demo1.STClass"); PropertyInfo propertyInfo = classType.GetProperty("prpAssm"); Type propertyType = propertyInfo.PropertyType;
    • 无论如何,您能否描述更多您想要实现的目标以及原因。可能有更好的方法来实现您的愿望。
    【解决方案2】:

    试试这个:-(使用PropertyInfo

    Assembly myAss = Assembly.LoadFile(@"YourAssemblyPath.dll");
    Type myType = myAss.GetType("MyNamespace.Demo1.STClass");
    PropertyInfo myProp = myType.GetProperty("prpAssm");
    Console.WriteLine(myProp.PropertyType);
    

    【讨论】:

    • myType 变空。那是因为类的代码是加密的吗? @拉胡尔·辛格
    • @SarathAvanavu - 我不这么认为..您的代码可能是加密的,但不是类型定义对吗?你能显示你正在尝试的代码吗?
    • 实际上我是从父表单调用我的表单,这是一个付费版本。我们只能访问它们的属性值,不能查看代码。由于安全问题,我无法粘贴代码@Rahul Singh
    • @SarathAvanavu - 我不是在问客户端代码,我问的是你是如何尝试获取的!你有没有先加载assembly?请检查我的编辑。在LoadFile 中,您需要指定完整的组件路径和名称。
    • 我已经添加了dll。我能够获取该类的某些属性(某些类默认向我们公开),但无法访问其他类(该属性中的值除外)@ Rahul Singh
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2018-06-05
    • 2016-05-10
    • 1970-01-01
    相关资源
    最近更新 更多