繁体   English   中英

从Type读取引用的名称空间

[英]Read referenced namespaces from Type

我需要一种通过反射来检查类型使用的所有名称空间的方法。

namespace My.Program.BaseTypes
{
    using System;
    using System.Text;
    using My.Program.Extenders;
    using My.Program.Helpers;
    using My.Program.Interfaces;

    public class MyTypeBase
    {
        public MyTypeBase()
        {
        }

        public My.Program.Helpers.HelperTypeX X
        {
            get;
            set;
        }

        public My.Program.Extenders.ExtenderTypeY Y
        {
            get;
            set;
        }

        public My.Program.Interfaces.InterfaceZ IZ
        {
            get;
            set;
        }
    }
}

我的代码中只有MyTypeBase的Type ,需要通过反射找出MyTypeBase中所有属性的所有引用命名空间。

当然,我可以遍历所有Properties,从它们中获取类型并检查它们的名称空间,但是有没有更干净的方法来实现这一目标?

为了避免这个问题,它是用于编写一个生成器,该生成器将基于一些旧代码创建新类。

不,我想不出更干净的方法。 类型本身本身并没有真正的概念,它使用了一堆命名空间-它具有本身引用类型的成员(属性/返回类型,字段类型,事件处理程序类型,嵌套类的类型或参数类型),但是这些只是个人成员。

从好的方面来说,使用LINQ并不难……类似:

var namespaces = type.GetProperties()
                     .Select(p => p.PropertyType.Namespace)
                     .Distinct();

请注意,这不会占用索引器参数类型的名称空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM