![](/img/trans.png)
[英]MVC5 using scaffolding for classes from other namespaces (referenced DLL)
[英]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.