Memahami Had C# pada Atribut Generik
C# melarang penggunaan jenis generik sebagai atribut. Contohnya, kod berikut:
<code class="language-csharp">public sealed class ValidatesAttribute<T> : Attribute { } [Validates<string>] public static class StringValidation { }</code>
akan gagal untuk disusun. Walaupun sekatan ini diketahui umum, alasan di sebaliknya kurang jelas.
Spesifikasi Common Language Infrastructure (CLI) tidak secara eksplisit melarang atribut generik. Walau bagaimanapun, spesifikasi C# 3 (bahagian 10.1.4) dengan jelas menyatakan larangan tanpa justifikasi. Spesifikasi ECMA C# 2 tidak memberikan penjelasan lanjut.
Penyelidikan menunjukkan bahawa keputusan itu bukan berdasarkan kekangan teknikal, sebaliknya pilihan reka bentuk. Menurut Eric Lippert (diringkaskan), kerumitan yang ditambah dengan menyokong atribut generik akan mengatasi faedah, membawa kepada bahasa dan pengkompil yang lebih kompleks tanpa memberikan nilai yang besar kepada pembangun.
Atas ialah kandungan terperinci Mengapa C# Tidak Boleh Mempunyai Atribut Generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!