簡體   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