[解決済み] カスタム属性のコンストラクタはいつ実行されるのですか?
2023-07-03 11:16:38
質問
いつ実行されるのですか?適用するオブジェクトごとに実行されるのですか、それとも一度だけですか? 何でもできるのですか、それとも動作が制限されているのですか?
どのように解決するのですか?
コンストラクタはいつ実行されるのでしょうか?サンプルで試してみてください。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Creating MyClass instance");
MyClass mc = new MyClass();
Console.WriteLine("Setting value in MyClass instance");
mc.Value = 1;
Console.WriteLine("Getting attributes for MyClass type");
object[] attributes = typeof(MyClass).GetCustomAttributes(true);
}
}
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
public MyAttribute()
{
Console.WriteLine("Running constructor");
}
}
[MyAttribute]
class MyClass
{
public int Value { get; set; }
}
そして、その出力は?
Creating MyClass instance
Setting value in MyClass instance
Getting attributes for MyClass type
Running constructor
つまり、属性を調べ始めると属性コンストラクタが実行されるわけです。属性は型のインスタンスではなく、型から取得されることに注意してください。
関連
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] ディープクローンオブジェクト
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#でベースコンストラクタを呼び出す
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] コンストラクタ内の仮想メンバー呼び出し
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] あるコンストラクタを別のコンストラクタから呼び出す
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】ソケットのアドレス(プロトコル/ネットワークアドレス/ポート)は、通常1つしか使用できない?
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] カスタムクラス属性ですべてのクラスを列挙するには?