0

入力クラス名="ABC"のような特定のクラス名の例の完全な名前空間パスを取得しようとしています

AB 名前空間にあるクラス ABC

ABABCのようなフルパスが必要です

私の入力タイプは、タイプではなくクラスの名前のような文字列で渡します

Type t= Type.GetType("ABABC"); 働く

Type t= Type.GetType("ABC"); 動作していません

ABCでABABCを見つける方法

コード :

 public partial class UcDataGridView : DataGridView
{
    private string _ClassFullName = "UcDataGridView";

    [Browsable(true), Category("Misc")]
    public string ClassFullName
    {
        get
        { return _ClassFullName; }
        set
        {
            _ClassFullName = value;
            if (!string.IsNullOrEmpty(_ClassFullName))
            {
                ClassType = Type.GetType(_ClassFullName);

                if (ClassType != null)
                {
                    if (ClassType.IsClass)
                    {
                        PropertyInfo[] props = ClassType.GetProperties();
                        foreach (var item in props)
                        {
                            var txtCol = new DataGridViewTextBoxColumn();
                            txtCol.Name = "C" + item.Name;
                            txtCol.HeaderText = item.Name;
                            txtCol.DataPropertyName = item.Name;
                            txtCol.ReadOnly = true;
                            this.Columns.Add(txtCol);
                        }
                    }
                    else
                        this.Columns.Clear();
                }
                else
                    this.Columns.Clear();
            }
            else
                this.Columns.Clear();
            Invalidate();
        }
    }
    private Type ClassType { get; set; }

    public UcDataGridView()
    {
        InitializeComponent();
    }

}
4

4 に答える 4

3

これは、

typeof(ABC).FullName
于 2013-07-16T08:34:10.933 に答える
0
typeof(_Default).UnderlyingSystemType
于 2013-07-16T08:45:06.390 に答える
0
string fullPathName= typeof(className).AssemblyQualifiedName;
于 2013-07-16T08:33:51.317 に答える
0

Linq を使用して、同じ名前のクラスのアセンブリをスキャンできます。

ClassType = Assembly.GetAssembly(typeof(UcDataGridView)).GetTypes().FirstOrDefault(t => t.Name == _ClassFullName);

UcDataGridViewが同じアセンブリに複数回出現しないことを確認する必要があります。

于 2013-07-16T08:52:11.070 に答える