@@ -10,6 +10,8 @@ public class RequiredAttributeAssetValidator : IValidator
1010 {
1111 public string MenuName => "Attributes/RequiredAttributeAssetValidator" ;
1212
13+ private const BindingFlags flags = BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance ;
14+
1315 public Report Validate ( )
1416 {
1517 Report report = new Report ( nameof ( RequiredAttributeAssetValidator ) ) ;
@@ -20,36 +22,19 @@ public Report Validate()
2022 {
2123 EditorUtility . DisplayProgressBar ( "RequiredAttributeAssetValidator" , "RequiredAttribute..." , ( float ) i / objects . Count ) ;
2224
23- FieldInfo [ ] fields = objects [ i ] . GetType ( ) . GetFields ( ) ;
25+ IEnumerable < ( FieldInfo FieldInfo , RequiredAttribute Attribute ) > fieldsWithRequiredAttribute = from fi in objects [ i ] . GetType ( ) . GetFields ( flags )
26+ let attr = fi . GetCustomAttributes ( typeof ( RequiredAttribute ) , true )
27+ where attr . Length == 1
28+ select ( FieldInfo : fi , Attribute : attr . First ( ) as RequiredAttribute ) ;
2429
25- for ( int j = 0 ; j < fields . Length ; j ++ )
30+ foreach ( ( FieldInfo FieldInfo , RequiredAttribute Attribute ) field in fieldsWithRequiredAttribute )
2631 {
27- object [ ] attr = fields [ j ] . GetCustomAttributes ( typeof ( RequiredAttribute ) , true ) ;
28-
29- if ( attr . Length > 0 && attr [ 0 ] is RequiredAttribute requiredAttribute )
32+ object o = field . FieldInfo . GetValue ( objects [ i ] ) ;
33+ if ( o == null || o . Equals ( null ) )
3034 {
31- object o = fields [ j ] . GetValue ( objects [ i ] ) ;
32-
33- if ( o == null || o . Equals ( null ) )
34- {
35- report . Log ( objects [ i ] , requiredAttribute . WarningType , requiredAttribute . Category , $ "{ fields [ j ] . Name } is null", $ "Assign { fields [ j ] . FieldType } ") ;
36- }
35+ report . Log ( objects [ i ] , field . Attribute . WarningType , field . Attribute . Category , $ "{ field . FieldInfo . Name } is null", $ "Assign { field . FieldInfo . FieldType } ") ;
3736 }
3837 }
39-
40- //IEnumerable<(FieldInfo FieldInfo, RequiredAttribute Attribute)> fieldsWithRequiredAttribute = from fi in objects[i].GetType().GetFields()
41- // let attr = fi.GetCustomAttributes(typeof(RequiredAttribute), true)
42- // where attr.Length == 1
43- // select (FieldInfo: fi, Attribute: attr.First() as RequiredAttribute);
44-
45- //foreach ((FieldInfo FieldInfo, RequiredAttribute Attribute) field in fieldsWithRequiredAttribute)
46- //{
47- // object o = field.FieldInfo.GetValue(objects[i]);
48- // if (o == null || o.Equals(null))
49- // {
50- // report.Log(objects[i], field.Attribute.WarningType, field.Attribute.Category, $"{field.FieldInfo.Name} is null", $"Assign {field.FieldInfo.FieldType}");
51- // }
52- //}
5338 }
5439 EditorUtility . ClearProgressBar ( ) ;
5540
@@ -61,6 +46,8 @@ public class RequiredAttributeSceneValidator : IValidator
6146 {
6247 public string MenuName => "Attributes/RequiredAttributeSceneValidator" ;
6348
49+ private const BindingFlags flags = BindingFlags . Public | BindingFlags . NonPublic | BindingFlags . Instance ;
50+
6451 public Report Validate ( )
6552 {
6653 Report report = new Report ( nameof ( RequiredAttributeSceneValidator ) ) ;
@@ -70,7 +57,7 @@ public Report Validate()
7057 for ( int i = 0 ; i < objects . Count ; i ++ )
7158 {
7259 EditorUtility . DisplayProgressBar ( "RequiredAttributeSceneValidator" , "RequiredAttribute..." , ( float ) i / objects . Count ) ;
73- IEnumerable < ( FieldInfo FieldInfo , RequiredAttribute Attribute ) > fieldsWithRequiredAttribute = from fi in objects [ i ] . GetType ( ) . GetFields ( )
60+ IEnumerable < ( FieldInfo FieldInfo , RequiredAttribute Attribute ) > fieldsWithRequiredAttribute = from fi in objects [ i ] . GetType ( ) . GetFields ( flags )
7461 let attr = fi . GetCustomAttributes ( typeof ( RequiredAttribute ) , true )
7562 where attr . Length == 1
7663 select ( FieldInfo : fi , Attribute : attr . First ( ) as RequiredAttribute ) ;
0 commit comments