示例#1
0
    public ScriptableObject _New(Type type, string scope = "")
    {
        string           typeString = type.ToString();
        BindMap          bindmap    = null;
        ScriptableObject returnSO;

        if (System.Array.Exists <BindMap>(injectMap.bind, (BindMap b) => b.bind.Equals(typeString) && b.scope.Equals(scope)))
        {
            bindmap = System.Array.Find <BindMap>(injectMap.bind, (BindMap b) => b.bind.Equals(typeString) && b.scope.Equals(scope));
        }
        if (bindmap != null)
        {
            Log(string.Format("bind {0} to {1}", bindmap.bind, bindmap.to));

            returnSO = ScriptableObject.CreateInstance(bindmap.to);

            //Inject into member
            _Inject(returnSO);
            return(returnSO);
        }
        else
        {
            logger.LogErrorFormat("Binding map doesn't set corresponding name to {0}, scope {1}.", typeString, scope);
            return(null);
            // throw new Exception("Binding map doesn't set corresponding name to " + typeString);
        }
    }
示例#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);
    }