コード例 #1
0
ファイル: ModelExtensions.cs プロジェクト: ewin66/eXpand.lab
 public static void UpdateValue <T>(this T targetNode, IModelNode sourceNode, params Expression <Func <T, object> >[] expressions) where T : IModelNode
 {
     foreach (var expression in expressions)
     {
         var attributeName = targetNode.GetPropertyName(expression);
         if (sourceNode.HasValue(attributeName))
         {
             var value = sourceNode.GetValue <T>(attributeName);
             sourceNode.ClearValue(attributeName);
             targetNode.SetValue(attributeName, value);
         }
     }
 }
コード例 #2
0
ファイル: ModelExtensions.cs プロジェクト: landytest/eXpand
        public static bool HasValue(this IModelNode modelNode, params Type[] interfacesToSearch)
        {
            var valueInfos = ((ModelNode)modelNode).NodeInfo.ValuesInfo;

            string[] namesToSearch = valueInfos.Select(info => info.Name).ToArray();
            if (interfacesToSearch != null)
            {
                namesToSearch = interfacesToSearch.SelectMany(type => type.Properties()).Select(info => info.Name).ToArray();
            }
            return(valueInfos.Where(info => namesToSearch.Contains(info.Name)).Select(info => modelNode.HasValue(info.Name)).Any());
        }
コード例 #3
0
ファイル: Synchronizers.cs プロジェクト: xyyhqq/eXpand
 protected virtual object GetNodeValueCore(IModelNode modelNode, string name)
 {
     return(modelNode.HasValue(name) ? modelNode.GetValue(name) : null);
 }