示例#1
0
    public T[] _GetArray <T> (Type type, string fieldName)
    {
        PrimitiveArrayMap map = Array.Find <PrimitiveArrayMap>(injectMap.primitiveArray, (x) =>
                                                               x.fieldPath.Equals(string.Format("{0}.{1}", type.ToString(), fieldName)));

        if (map != null)
        {
            Log(string.Format("<GetArray>Found path {0}, for field {2} of type {1} to value {3}", map.fieldPath, type.ToString(), fieldName, map.fieldValue));
            T[] t = new T[map.fieldValue.Length];
            for (int i = 0; i < map.fieldValue.Length; i++)
            {
                t[i] = (T)Convert.ChangeType(map.fieldValue[i], typeof(T));
            }
            return(t);
        }
        else
        {
            throw new PrimitiveMapNotDeclareException();
        }
    }
示例#2
0
    public void _Read(string settings)
    {
        if (string.IsNullOrEmpty(settings))
        {
            return;
        }

        InjectMap outsideSettings = parser.Parse <InjectMap>(settings);

        foreach (BindMap bindMapCurr in injectMap.bind)
        {
            // If there hasn't setting, leave loop.
            if (outsideSettings.bind == null)
            {
                break;
            }

            BindMap bindMapNew = null;
            bindMapNew = Array.Find(
                outsideSettings.bind,
                (BindMap bm) => bm.bind.Equals(bindMapCurr.bind)
                );

            if (bindMapNew != null)
            {
                bindMapCurr.to = String.Copy(bindMapNew.to);
            }
        }

        foreach (PrimitiveMap primitiveMapCurr in injectMap.primitive)
        {
            // If there hasn't setting, leave loop.
            if (outsideSettings.primitive == null)
            {
                break;
            }

            PrimitiveMap primitiveMapNew = null;
            primitiveMapNew = Array.Find(
                outsideSettings.primitive,
                (PrimitiveMap pm) => pm.fieldPath.Equals(primitiveMapCurr.fieldPath)
                );

            if (primitiveMapNew != null)
            {
                primitiveMapCurr.fieldValue = String.Copy(primitiveMapNew.fieldValue);
            }
        }

        foreach (PrimitiveArrayMap primitiveArrayMapCurr in injectMap.primitiveArray)
        {
            // If there hasn't setting, leave loop.
            if (outsideSettings.primitiveArray == null)
            {
                break;
            }

            PrimitiveArrayMap PrimitiveArrayMapNew = null;
            PrimitiveArrayMapNew = Array.Find(
                outsideSettings.primitiveArray,
                (PrimitiveArrayMap pam) => pam.fieldPath.Equals(primitiveArrayMapCurr.fieldPath)
                );

            if (PrimitiveArrayMapNew != null)
            {
                Array.Copy(PrimitiveArrayMapNew.fieldValue, primitiveArrayMapCurr.fieldValue, PrimitiveArrayMapNew.fieldValue.Length);
            }
        }

        //Due to new settings changed, reinject level of logger
        Inject(logger);
    }