CSLE.RegHelper_TypeFunction.MemberValueSet C# (CSharp) Method

MemberValueSet() public method

public MemberValueSet ( CLS_Content content, object object_this, string valuename, object value ) : bool
content CLS_Content
object_this object
valuename string
value object
return bool
        public virtual bool MemberValueSet(CLS_Content content, object object_this, string valuename, object value)
        {
            MemberValueCache c;

            if (!memberValuesetCaches.TryGetValue(valuename, out c))
            {
                c = new MemberValueCache();
                memberValuesetCaches[valuename] = c;
                c.finfo = type.GetField(valuename);
                if (c.finfo == null)
                {
                    c.minfo = type.GetMethod("set_" + valuename);
                    var mss = type.GetMethods();
                    if (c.minfo == null)
                    {
                        if (type.GetMethod("add_" + valuename) != null)
                        {
                            c.type = 3;//event;
                        }
                        else
                        {
                            c.type = -1;
                            return false;
                        }
                    }

                    else
                    {
                        c.type = 2;
                    }
                }
                else
                {
                    c.type = 1;
                }
            }

            if (c.type < 0)
                return false;

            if (c.type == 1)
            {
                if (value != null && value.GetType() != c.finfo.FieldType)
                {

                    value = content.environment.GetType(value.GetType()).ConvertTo(content, value, c.finfo.FieldType);
                }
                c.finfo.SetValue(object_this, value);
            }
            else if(c.type==2)
            {
                var ptype = c.minfo.GetParameters()[0].ParameterType;
                if (value != null && value.GetType() != ptype)
                {

                    value = content.environment.GetType(value.GetType()).ConvertTo(content, value, ptype);
                }
                c.minfo.Invoke(object_this, new object[] { value });
            }
            return true;
            ////先操作File
            //var targetf = type.GetField(valuename);
            //if (targetf != null)
            //{
            //    if (value != null && value.GetType() != targetf.FieldType)
            //    {

            //        value = content.environment.GetType(value.GetType()).ConvertTo(content, value, targetf.FieldType);
            //    }
            //    targetf.SetValue(object_this, value);
            //    return;
            //}
            //else
            //{
            //    var methodf = type.GetMethod("set_" + valuename);
            //    if (methodf != null)
            //    {
            //        var ptype = methodf.GetParameters()[0].ParameterType;
            //        if (value != null && value.GetType() != ptype)
            //        {

            //            value = content.environment.GetType(value.GetType()).ConvertTo(content, value, ptype);
            //        }
            //        methodf.Invoke(object_this, new object[] { value });

            //        return;
            //    }
            //}



            //throw new NotImplementedException();
        }