C#の上の文字列にasp.netのユーザーコントロールの現在のクラス名を変換する方法?

StackOverflow https://stackoverflow.com/questions/1881333

質問

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

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

public class Child : Parent {
}

私はハードコードされた名前を持つ文字列プロパティと子を作成しようとしましたが、我々はこれまでより優れた回避策を見つけることができた場合にのみ...多分反射や表現...

事前に感謝=)

編集:私は途中でユーザーコントロールに取り組んでいます...

役に立ちましたか?

解決

あなたがASP.NET Webアプリケーションプロジェクトを使用している場合は、

、あなたは通常、コードビハインドモデルを使用することになります。

ASP.NETで動的にあなたのコードビハインドファイルベース・クラスなどで定義されたクラスを使用して、あなたのASPX / ascxファイルのファイルからクラスを生成し、コンパイルします。

this.GetType().Namethis.GetType().FullNameは、ASP.NETによって生成された自動生成されたクラスの名前を返します。この自動生成されたクラスは、あなたのコードビハインドファイル(あなたのaspxファイルのあなたのASCXファイル/ Inheritsタグの<%@Control ...>タグで<%@Page ...>キーワード)で定義されているユーザーコントロール/ウェブページのクラスをサブクラス化されます。

あなたのコードビハインドクラスの名前をしたい場合は、使用します:

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

他のヒント

このよう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);
    }
}

使用GetType()Name

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

または

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

それとも、あなたの変数の基本型を取得するためにリフレクションを使用することができます。

control.GetType().BaseType.Name

あなたはそれがそうである理由、私は深い説明を提供できる必要がある場合。

あなたがしたい場合は、このコードを試すことができます。

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

これは、あなたが名前を与えますが、これはユーザーコントロールのタイプではありませんが、それはファイル名です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top