C#の上の文字列にasp.netのユーザーコントロールの現在のクラス名を変換する方法?
-
18-09-2019 - |
質問
だから私は(メソッド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で動的にあなたのコードビハインドファイルベース・クラスなどで定義されたクラスを使用して、あなたのASPX / ascxファイルのファイルからクラスを生成し、コンパイルします。
this.GetType().Name
とthis.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)
これは、あなたが名前を与えますが、これはユーザーコントロールのタイプではありませんが、それはファイル名です。