NServiceBus.EncryptionInspector.GetFieldsAndProperties C# (CSharp) Method

GetFieldsAndProperties() static private method

static private GetFieldsAndProperties ( object target ) : List
target object
return List
        static List<MemberInfo> GetFieldsAndProperties(object target)
        {
            if (target == null)
            {
                return NoMembers;
            }

            return cache.GetOrAdd(target.GetType().TypeHandle, typeHandle =>
            {
                var messageType = Type.GetTypeFromHandle(typeHandle);
                var members = new List<MemberInfo>();
                foreach (var member in messageType.GetMembers(BindingFlags.Public | BindingFlags.Instance))
                {
                    var fieldInfo = member as FieldInfo;
                    if (fieldInfo != null && !fieldInfo.IsInitOnly)
                    {
                        members.Add(fieldInfo);
                    }

                    var propInfo = member as PropertyInfo;
                    if (propInfo != null && propInfo.CanWrite)
                    {
                        members.Add(propInfo);
                    }
                }
                return members;
            });
        }