-
Notifications
You must be signed in to change notification settings - Fork 1
/
Annotations.cs
1907 lines (1762 loc) · 68.5 KB
/
Annotations.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// *********************************************************************************
// <copyright file=Annotations.cs company="Marcus Technical Services, Inc.">
// Copyright @2019 Marcus Technical Services, Inc.
// </copyright>
//
// MIT License
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// *********************************************************************************
#pragma warning disable 1591
// ReSharper disable UnusedMember.Global
// ReSharper disable MemberCanBePrivate.Global
// ReSharper disable UnusedAutoPropertyAccessor.Global
// ReSharper disable IntroduceOptionalParameters.Global
// ReSharper disable MemberCanBeProtected.Global
// ReSharper disable InconsistentNaming
namespace Com.MarcusTS.SharedForms.Annotations
{
using System;
/// <summary>
/// Specifies assertion type. If the assertion method argument satisfies the condition,
/// then the execution continues. Otherwise, execution is assumed to be halted.
/// </summary>
public enum AssertionConditionType
{
/// <summary>
/// Marked parameter should be evaluated to true.
/// </summary>
IS_TRUE = 0,
/// <summary>
/// Marked parameter should be evaluated to false.
/// </summary>
IS_FALSE = 1,
/// <summary>
/// Marked parameter should be evaluated to null value.
/// </summary>
IS_NULL = 2,
/// <summary>
/// Marked parameter should be evaluated to not null value.
/// </summary>
IS_NOT_NULL = 3
}
/// <summary>
/// Enum CollectionAccessType
/// </summary>
[Flags]
public enum CollectionAccessType
{
/// <summary>
/// Method does not use or modify content of the collection.
/// </summary>
None = 0,
/// <summary>
/// Method only reads content of the collection but does not modify it.
/// </summary>
Read = 1,
/// <summary>
/// Method can change content of the collection but does not add new elements.
/// </summary>
ModifyExistingContent = 2,
/// <summary>
/// Method can add new elements to the collection.
/// </summary>
UpdatedContent = ModifyExistingContent | 4
}
/// <summary>
/// Enum ImplicitUseKindFlags
/// </summary>
[Flags]
public enum ImplicitUseKindFlags
{
/// <summary>
/// The default
/// </summary>
Default = Access | Assign | InstantiatedWithFixedConstructorSignature,
/// <summary>
/// Only entity marked with attribute considered used.
/// </summary>
Access = 1,
/// <summary>
/// Indicates implicit assignment to a member.
/// </summary>
Assign = 2,
/// <summary>
/// Indicates implicit instantiation of a type with fixed constructor signature.
/// That means any unused constructor parameters won't be reported as such.
/// </summary>
InstantiatedWithFixedConstructorSignature = 4,
/// <summary>
/// Indicates implicit instantiation of a type.
/// </summary>
InstantiatedNoFixedConstructorSignature = 8
}
/// <summary>
/// Specify what is considered used implicitly when marked
/// with <see cref="MeansImplicitUseAttribute" /> or <see cref="UsedImplicitlyAttribute" />.
/// </summary>
[Flags]
public enum ImplicitUseTargetFlags
{
/// <summary>
/// The default
/// </summary>
Default = Itself,
/// <summary>
/// The itself
/// </summary>
Itself = 1,
/// <summary>
/// Members of entity marked with attribute are considered used.
/// </summary>
Members = 2,
/// <summary>
/// Entity marked with attribute and all its members considered used.
/// </summary>
WithMembers = Itself | Members
}
/// <summary>
/// Class AspChildControlTypeAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class AspChildControlTypeAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspChildControlTypeAttribute" /> class.
/// </summary>
/// <param name="tagName">Name of the tag.</param>
/// <param name="controlType">Type of the control.</param>
public AspChildControlTypeAttribute
(
[NotNull] string tagName,
[NotNull] Type controlType
)
{
TagName = tagName;
ControlType = controlType;
}
/// <summary>
/// Gets the type of the control.
/// </summary>
/// <value>The type of the control.</value>
[NotNull]
public Type ControlType { get; }
/// <summary>
/// Gets the name of the tag.
/// </summary>
/// <value>The name of the tag.</value>
[NotNull]
public string TagName { get; }
}
/// <summary>
/// Class AspDataFieldAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
public sealed class AspDataFieldAttribute : Attribute
{
}
/// <summary>
/// Class AspDataFieldsAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Method)]
public sealed class AspDataFieldsAttribute : Attribute
{
}
/// <summary>
/// Class AspMethodPropertyAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Property)]
public sealed class AspMethodPropertyAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
/// is an MVC action. If applied to a method, the MVC action name is calculated
/// implicitly from the context. Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
public sealed class AspMvcActionAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcActionAttribute" /> class.
/// </summary>
public AspMvcActionAttribute()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcActionAttribute" /> class.
/// </summary>
/// <param name="anonymousProperty">The anonymous property.</param>
public AspMvcActionAttribute([NotNull] string anonymousProperty)
{
AnonymousProperty = anonymousProperty;
}
/// <summary>
/// Gets the anonymous property.
/// </summary>
/// <value>The anonymous property.</value>
[CanBeNull]
public string AnonymousProperty { get; }
}
/// <summary>
/// ASP.NET MVC attribute. When applied to a parameter of an attribute,
/// indicates that this parameter is an MVC action name.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
/// <example>
/// <code>
/// [ActionName("Foo")]
/// public ActionResult Login(string returnUrl) {
/// ViewBag.ReturnUrl = Url.Action("Foo"); // OK
/// return RedirectToAction("Bar"); // Error: Cannot resolve action
/// }
/// </code>
/// </example>
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property)]
public sealed class AspMvcActionSelectorAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC area.
/// Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcAreaAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcAreaAttribute" /> class.
/// </summary>
public AspMvcAreaAttribute()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcAreaAttribute" /> class.
/// </summary>
/// <param name="anonymousProperty">The anonymous property.</param>
public AspMvcAreaAttribute([NotNull] string anonymousProperty)
{
AnonymousProperty = anonymousProperty;
}
/// <summary>
/// Gets the anonymous property.
/// </summary>
/// <value>The anonymous property.</value>
[CanBeNull]
public string AnonymousProperty { get; }
}
/// <summary>
/// Class AspMvcAreaMasterLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcAreaMasterLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcAreaMasterLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcAreaMasterLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// Class AspMvcAreaPartialViewLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcAreaPartialViewLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcAreaPartialViewLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcAreaPartialViewLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// Class AspMvcAreaViewLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcAreaViewLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcAreaViewLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcAreaViewLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is
/// an MVC controller. If applied to a method, the MVC controller name is calculated
/// implicitly from the context. Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
public sealed class AspMvcControllerAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcControllerAttribute" /> class.
/// </summary>
public AspMvcControllerAttribute()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcControllerAttribute" /> class.
/// </summary>
/// <param name="anonymousProperty">The anonymous property.</param>
public AspMvcControllerAttribute([NotNull] string anonymousProperty)
{
AnonymousProperty = anonymousProperty;
}
/// <summary>
/// Gets the anonymous property.
/// </summary>
/// <value>The anonymous property.</value>
[CanBeNull]
public string AnonymousProperty { get; }
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC display template.
/// Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcDisplayTemplateAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template.
/// Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcEditorTemplateAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute
/// for custom wrappers similar to <c>System.Web.Mvc.Controller.View(String, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcMasterAttribute : Attribute
{
}
/// <summary>
/// Class AspMvcMasterLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcMasterLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcMasterLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcMasterLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute
/// for custom wrappers similar to <c>System.Web.Mvc.Controller.View(String, Object)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcModelTypeAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC
/// partial view. If applied to a method, the MVC partial view name is calculated implicitly
/// from the context. Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
public sealed class AspMvcPartialViewAttribute : Attribute
{
}
/// <summary>
/// Class AspMvcPartialViewLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcPartialViewLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcPartialViewLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcPartialViewLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public sealed class AspMvcSuppressViewErrorAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. Indicates that a parameter is an MVC template.
/// Use this attribute for custom wrappers similar to
/// <c>System.ComponentModel.DataAnnotations.UIHintAttribute(System.String)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcTemplateAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
/// is an MVC view component. If applied to a method, the MVC view name is calculated implicitly
/// from the context. Use this attribute for custom wrappers similar to
/// <c>System.Web.Mvc.Controller.View(Object)</c>.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
public sealed class AspMvcViewAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
/// is an MVC view component name.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AspMvcViewComponentAttribute : Attribute
{
}
/// <summary>
/// ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter
/// is an MVC view component view. If applied to a method, the MVC view component view name is default.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Method)]
public sealed class AspMvcViewComponentViewAttribute : Attribute
{
}
/// <summary>
/// Class AspMvcViewLocationFormatAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)]
public sealed class AspMvcViewLocationFormatAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspMvcViewLocationFormatAttribute" /> class.
/// </summary>
/// <param name="format">The format.</param>
public AspMvcViewLocationFormatAttribute([NotNull] string format)
{
Format = format;
}
/// <summary>
/// Gets the format.
/// </summary>
/// <value>The format.</value>
[NotNull]
public string Format { get; }
}
/// <summary>
/// Class AspRequiredAttributeAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public sealed class AspRequiredAttributeAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspRequiredAttributeAttribute" /> class.
/// </summary>
/// <param name="attribute">The attribute.</param>
public AspRequiredAttributeAttribute([NotNull] string attribute)
{
Attribute = attribute;
}
/// <summary>
/// Gets the attribute.
/// </summary>
/// <value>The attribute.</value>
[NotNull]
public string Attribute { get; }
}
/// <summary>
/// Class AspTypePropertyAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Property)]
public sealed class AspTypePropertyAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AspTypePropertyAttribute" /> class.
/// </summary>
/// <param name="createConstructorReferences">if set to <c>true</c> [create constructor references].</param>
public AspTypePropertyAttribute(bool createConstructorReferences)
{
CreateConstructorReferences = createConstructorReferences;
}
/// <summary>
/// Gets a value indicating whether [create constructor references].
/// </summary>
/// <value><c>true</c> if [create constructor references]; otherwise, <c>false</c>.</value>
public bool CreateConstructorReferences { get; }
}
/// <summary>
/// Indicates the condition parameter of the assertion method. The method itself should be
/// marked by <see cref="AssertionMethodAttribute" /> attribute. The mandatory argument of
/// the attribute is the assertion type.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class AssertionConditionAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="AssertionConditionAttribute" /> class.
/// </summary>
/// <param name="conditionType">Type of the condition.</param>
public AssertionConditionAttribute(AssertionConditionType conditionType)
{
ConditionType = conditionType;
}
/// <summary>
/// Gets the type of the condition.
/// </summary>
/// <value>The type of the condition.</value>
public AssertionConditionType ConditionType { get; }
}
/// <summary>
/// Indicates that the marked method is assertion method, i.e. it halts control flow if
/// one of the conditions is satisfied. To set the condition, mark one of the parameters with
/// <see cref="AssertionConditionAttribute" /> attribute.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Method)]
public sealed class AssertionMethodAttribute : Attribute
{
}
/// <summary>
/// When applied to a target attribute, specifies a requirement for any type marked
/// with the target attribute to implement or inherit specific type or types.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
/// <example>
/// <code>
/// [BaseTypeRequired(typeof(IComponent)] // Specify requirement
/// class ComponentAttribute : Attribute { }
/// [Component] // ComponentAttribute requires implementing IComponent interface
/// class MyComponent : IComponent { }
/// </code>
/// </example>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
[BaseTypeRequired(typeof(Attribute))]
public sealed class BaseTypeRequiredAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="BaseTypeRequiredAttribute" /> class.
/// </summary>
/// <param name="baseType">Type of the base.</param>
public BaseTypeRequiredAttribute([NotNull] Type baseType)
{
BaseType = baseType;
}
/// <summary>
/// Gets the type of the base.
/// </summary>
/// <value>The type of the base.</value>
[NotNull]
public Type BaseType { get; }
}
/// <summary>
/// Indicates that the value of the marked element could be <c>null</c> sometimes,
/// so the check for <c>null</c> is necessary before its usage.
/// </summary>
/// <example>
/// <code>
/// [CanBeNull] object Test() => null;
///
/// void UseTest() {
/// var p = Test();
/// var s = p.ToString(); // Warning: Possible 'System.NullReferenceException'
/// }
/// </code>
/// </example>
/// <summary>
/// Class CanBeNullAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(
AttributeTargets.Method | AttributeTargets.Parameter | AttributeTargets.Property |
AttributeTargets.Delegate | AttributeTargets.Field | AttributeTargets.Event |
AttributeTargets.Class | AttributeTargets.Interface | AttributeTargets.GenericParameter)]
public sealed class CanBeNullAttribute : Attribute
{
}
/// <summary>
/// Indicates that the value of the marked type (or its derivatives)
/// cannot be compared using '==' or '!=' operators and <c>Equals()</c>
/// should be used instead. However, using '==' or '!=' for comparison
/// with <c>null</c> is always permitted.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
/// <example>
/// <code>
/// [CannotApplyEqualityOperator]
/// class NoEquality { }
/// class UsesNoEquality {
/// void Test() {
/// var ca1 = new NoEquality();
/// var ca2 = new NoEquality();
/// if (ca1 != null) { // OK
/// bool condition = ca1 == ca2; // Warning
/// }
/// }
/// }
/// </code>
/// </example>
[AttributeUsage(AttributeTargets.Interface | AttributeTargets.Class | AttributeTargets.Struct)]
public sealed class CannotApplyEqualityOperatorAttribute : Attribute
{
}
/// <summary>
/// Indicates how method, constructor invocation or property access
/// over collection type affects content of the collection.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Constructor | AttributeTargets.Property)]
public sealed class CollectionAccessAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="CollectionAccessAttribute" /> class.
/// </summary>
/// <param name="collectionAccessType">Type of the collection access.</param>
public CollectionAccessAttribute(CollectionAccessType collectionAccessType)
{
CollectionAccessType = collectionAccessType;
}
/// <summary>
/// Gets the type of the collection access.
/// </summary>
/// <value>The type of the collection access.</value>
public CollectionAccessType CollectionAccessType { get; }
}
/// <summary>
/// Describes dependency between method input and output.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
/// <syntax>
/// <p>Function Definition Table syntax:</p>
/// <list>
/// <item>FDT ::= FDTRow [;FDTRow]*</item>
/// <item>FDTRow ::= Input => Output | Output <= Input</item>
/// <item>Input ::= ParameterName: Value [, Input]*</item>
/// <item>Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value}</item>
/// <item>Value ::= true | false | null | notnull | canbenull</item>
/// </list>
/// If method has single input parameter, it's name could be omitted.<br />
/// Using <c>halt</c> (or <c>void</c>/<c>nothing</c>, which is the same) for method output
/// means that the methos doesn't return normally (throws or terminates the process).<br />
/// Value <c>canbenull</c> is only applicable for output parameters.<br />
/// You can use multiple <c>[ContractAnnotation]</c> for each FDT row, or use single attribute
/// with rows separated by semicolon. There is no notion of order rows, all rows are checked
/// for applicability and applied per each program state tracked by R# analysis.<br />
/// </syntax>
/// <examples>
/// <list>
/// <item>
/// <code>
/// [ContractAnnotation("=> halt")]
/// public void TerminationMethod()
/// </code>
/// </item>
/// <item>
/// <code>
/// [ContractAnnotation("halt <= condition: false")]
/// public void Assert(bool condition, string text) // regular assertion method
/// </code>
/// </item>
/// <item>
/// <code>
/// [ContractAnnotation("s:null => true")]
/// public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty()
/// </code>
/// </item>
/// <item>
/// <code>
/// // A method that returns null if the parameter is null,
/// // and not null if the parameter is not null
/// [ContractAnnotation("null => null; notnull => notnull")]
/// public object Transform(object data)
/// </code>
/// </item>
/// <item>
/// <code>
/// [ContractAnnotation("=> true, result: notnull; => false, result: null")]
/// public bool TryParse(string s, out Person result)
/// </code>
/// </item>
/// </list>
/// </examples>
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public sealed class ContractAnnotationAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="ContractAnnotationAttribute" /> class.
/// </summary>
/// <param name="contract">The contract.</param>
public ContractAnnotationAttribute([NotNull] string contract)
: this(contract, false)
{
}
/// <summary>
/// Initializes a new instance of the <see cref="ContractAnnotationAttribute" /> class.
/// </summary>
/// <param name="contract">The contract.</param>
/// <param name="forceFullStates">if set to <c>true</c> [force full states].</param>
public ContractAnnotationAttribute
(
[NotNull] string contract,
bool forceFullStates
)
{
Contract = contract;
ForceFullStates = forceFullStates;
}
/// <summary>
/// Gets the contract.
/// </summary>
/// <value>The contract.</value>
[NotNull]
public string Contract { get; }
/// <summary>
/// Gets a value indicating whether [force full states].
/// </summary>
/// <value><c>true</c> if [force full states]; otherwise, <c>false</c>.</value>
public bool ForceFullStates { get; }
}
/// <summary>
/// Class HtmlAttributeValueAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property)]
public sealed class HtmlAttributeValueAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="HtmlAttributeValueAttribute" /> class.
/// </summary>
/// <param name="name">The name.</param>
public HtmlAttributeValueAttribute([NotNull] string name)
{
Name = name;
}
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
[NotNull]
public string Name { get; }
}
/// <summary>
/// Class HtmlElementAttributesAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Property | AttributeTargets.Field)]
public sealed class HtmlElementAttributesAttribute : Attribute
{
/// <summary>
/// Initializes a new instance of the <see cref="HtmlElementAttributesAttribute" /> class.
/// </summary>
public HtmlElementAttributesAttribute()
{
}
/// <summary>
/// Initializes a new instance of the <see cref="HtmlElementAttributesAttribute" /> class.
/// </summary>
/// <param name="name">The name.</param>
public HtmlElementAttributesAttribute([NotNull] string name)
{
Name = name;
}
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name.</value>
[CanBeNull]
public string Name { get; }
}
/// <summary>
/// Tells code analysis engine if the parameter is completely handled when the invoked method is on stack.
/// If the parameter is a delegate, indicates that delegate is executed while the method is executed.
/// If the parameter is an enumerable, indicates that it is enumerated while the method is executed.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]
public sealed class InstantHandleAttribute : Attribute
{
}
/// <summary>
/// Indicates that the function argument should be string literal and match one
/// of the parameters of the caller function. For example, ReSharper annotates
/// the parameter of <see cref="System.ArgumentNullException" />.
/// </summary>
/// <example>
/// <code>
/// void Foo(string param) {
/// if (param == null)
/// throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol
/// }
/// </code>
/// </example>
/// <summary>
/// Class InvokerParameterNameAttribute. This class cannot be inherited.
/// Implements the <see cref="System.Attribute" />
/// </summary>
/// <seealso cref="System.Attribute" />
[AttributeUsage(AttributeTargets.Parameter)]