public void InitializeInterfaces(NpcInterfaceInfo.Set interfaceSet)
        {
            if (parentNpcInterfaces == null)
            {
                this.parentNpcInterfaces   = new List <NpcInterfaceInfo>();
                this.ancestorNpcInterfaces = new List <NpcInterfaceInfo>();
                interfaceSet.GetParentInterfaces(type, parentNpcInterfaces, ancestorNpcInterfaces);

                if (parentNpcInterfaces.Count <= 0)
                {
                    throw new InvalidOperationException(String.Format(
                                                            "Class {0} did not implement any NpcInterfaces (An NpcInterface is an interface with the [NpcInterface] attribute)", type.Name));
                }
            }
            else
            {
                foreach (var @interface in parentNpcInterfaces)
                {
                    interfaceSet.TryAdd(@interface.interfaceType, @interface);
                }
                foreach (var @interface in ancestorNpcInterfaces)
                {
                    interfaceSet.TryAdd(@interface.interfaceType, @interface);
                }
            }
        }
        public void InitializeInterfaces(NpcInterfaceInfo.Set interfaceSet)
        {
            if (parentNpcInterfaces != null)
            {
                throw new InvalidOperationException("Interfaces already initialized");
            }

            this.parentNpcInterfaces   = new List <NpcInterfaceInfo>();
            this.ancestorNpcInterfaces = new List <NpcInterfaceInfo>();
            interfaceSet.GetParentInterfaces(interfaceType, parentNpcInterfaces, ancestorNpcInterfaces);
        }