4

だから私は GetType() を試しましたが、何らかの理由で名前空間が含まれています...
C# には、その名前を指定するクラスのプロパティがありませんか?
例えば:

public class Parent : System.Web.UI.UserControl {
    public someFunction(){
        Child child = new Child();
        Console.WriteLine(child.ThePropertyThatContainsTheName);
    }
}

public class Child : Parent {
}

名前がハードコーディングされた文字列プロパティで子を作成しようとしましたが、これに対するより良い回避策を見つけることができた場合にのみ...おそらくリフレクションまたは式...

よろしくお願いします=)

編集:ちなみにユーザーコントロールに取り組んでいます...

4

4 に答える 4

15

ASP.NET Web アプリケーション プロジェクトを使用している場合、通常はコード ビハインド モデルを使用します。

ASP.NET は、aspx/ascx ファイルからクラスを動的に生成してコンパイルします。このクラスは、コード ビハインド ファイルで定義したクラスを基本クラスとして使用します。

this.GetType().Namethis.GetType().FullNameASP.NET によって生成された自動生成クラスの名前を返します。この自動生成されたクラスは、コード ビハインド ファイルで定義した UserControl/WebPage クラスをサブクラス化します ( ascx ファイルInheritsのタグ内のキーワード/ aspx ファイルのタグ)。<%@Control ...><%@Page ...>

コード ビハインド クラスの名前が必要な場合は、次を使用します。

this.GetType().BaseType.Nameまたthis.GetType().BaseType.FullName

于 2009-12-23T08:38:54.503 に答える
4

Type.Name次のように使用します。

using System;

class Test
{
    static void Main()
    {
        Console.WriteLine(typeof(Test).Name);
    }
}

またはこのように( を介してタイプを取得している場合Object.GetType):

using System;

class Foo { }

class Test
{
    static void Main()
    {
        Foo foo = new Foo();
        Console.WriteLine(foo.GetType().Name);
    }
}
于 2009-12-10T14:31:53.757 に答える
1

または、リフレクションを使用して変数の基本型を取得できます

control.GetType().BaseType.Name

必要に応じて、その理由を詳しく説明できます。

必要に応じて、このコードを試すことができます

System.IO.Path.GetFileNameWithoutExtension(((UserControl)control).AppRelativeVirtualPath)

これにより、必要な名前が付けられますが、これは UserControl のタイプではなく、ファイル名です。

于 2009-12-29T07:52:25.957 に答える
1

使用GetType()してName

Console.Writeline(child.GetType().Name);

また

Console.Writeline(child.GetType().FullName);
于 2009-12-10T14:34:39.443 に答える