예제 #1
0
 public static string GetConceptInfo(NssConcept nssConcept)
 {
     if (!m_dicConceptRecord.TryGetValue(nssConcept, out NssConceptRecord nssConceptRecord))
     {
         throw new NssIntegrationException($"'{nssConcept}'是未注册的{nameof(NssConcept)}");
     }
     return(nssConceptRecord.info);
 }
예제 #2
0
        public static string CheckConcept <T>(NssConcept nssConcept, T value)
        {
            if (!m_dicConceptRecord.TryGetValue(nssConcept, out NssConceptRecord nssConceptRecord))
            {
                throw new NssIntegrationException($"'{nssConcept}'是未注册的{nameof(NssConcept)}");
            }

            if (!nssConceptRecord.type.IsAssignableFrom(typeof(T)))
            {
                throw new NssIntegrationException($"'{nssConcept}'类型不匹配,需要的类型'{nssConceptRecord.type}',输入的类型'{typeof(T)}'!");
            }

            return(((NssConceptRecord <T>)nssConceptRecord).checker(value));
        }
예제 #3
0
        public static string CheckConcept(NssConcept nssConcept, object value)
        {
            if (value == null)
            {
                return(null);
            }

            if (!m_dicConceptRecord.TryGetValue(nssConcept, out NssConceptRecord nssConceptRecord))
            {
                throw new NssIntegrationException($"'{nssConcept}'是未注册的{nameof(NssConcept)}");
            }

            if (!nssConceptRecord.type.IsAssignableFrom(value.GetType()))
            {
                throw new NssIntegrationException($"'{nssConcept}'类型不匹配,需要的类型'{nssConceptRecord.type}',输入的类型'{value.GetType()}'!");
            }

            var checkerField = nssConceptRecord.GetType().GetField("checker", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
            var checker      = checkerField.GetValue(nssConceptRecord);
            var ret          = ((Delegate)checker).DynamicInvoke(value);

            return((string)ret);
        }
 public NssConceptConfigurationAttribute(NssConcept nssConcept) : base(NssConceptHelper.GetConceptInfo(nssConcept))
 {
     valueChecker = value => NssConceptHelper.CheckConcept(nssConcept, value);
 }