public static void InitFromParentHostCapabilityAttribute(Type definitionType)
        {
            var parentHostAttrs = definitionType
                .GetCustomAttributes(typeof(ParentHostCapabilityAttribute), true) as ParentHostCapabilityAttribute[];

            if (parentHostAttrs != null)
            {
                foreach (var attr in parentHostAttrs)
                {
                    if (attr.HostType == null)
                        continue;

                    var parentType = attr.HostType;

                    var currentRelationShip = Relationships.FirstOrDefault(r => r.DefinitionType == definitionType);

                    if (currentRelationShip == null)
                    {
                        currentRelationShip = new DefinitionRelationship
                        {
                            DefinitionType = definitionType
                        };

                        Relationships.Add(currentRelationShip);
                    }

                    if (!currentRelationShip.HostTypes.Contains(parentType))
                        currentRelationShip.HostTypes.Add(parentType);
                }
            }
        }
Beispiel #2
0
        private static IEnumerable<string> GetUnsupportedRelationshipModelNodeTypes(
            MethodInfo modelSyntaxMethodInfo,
            DefinitionRelationship relationships)
        {
            if (modelSyntaxMethodInfo == null)
                return Enumerable.Empty<string>();

            var currentInterfaceTypes = modelSyntaxMethodInfo.GetGenericArguments()[0]
                .GetInterfaces()
                .Where(i => i != typeof(IHostModelNode))
                .ToList();

            var currentModelModeTypeNames = AllModelNodeTypes.Where(n => n.GetInterfaces()
                .Any(i => currentInterfaceTypes.Contains(i)))
                .Select(t => t.Name);

            var expectedModelNodeTypeNames =
                relationships.HostTypes.Select(
                    t => string.Format("{0}ModelNode", t.Name.Replace("Definition", string.Empty)));

            var unsupportedRelationshipModelNodeTypes =
                expectedModelNodeTypeNames.Where(i => !currentModelModeTypeNames.Contains(i));

            return unsupportedRelationshipModelNodeTypes;
        }