Пример #1
0
        /// <summary>
        /// Instantiate the factory and return a populated resource object
        /// </summary>
        public Resource Instantiate(IResourceTypeController typeController, IResourceGraph graph)
        {
            // This looks a little nasty, but it is the best way to prevent castle from
            // interfering with the resource relations
            Instance = typeController.Create(Type);

            // Resources need access to the creator
            Instance.Graph = graph;

            // Copy default properties
            Instance.Id          = Id;
            Instance.Name        = Name;
            Instance.Description = Description;

            // Copy extended data from json
            if (ExtensionData != null)
            {
                JsonConvert.PopulateObject(ExtensionData, Instance, JsonSettings.Minimal);
            }

            // Read everything else from defaults
            ValueProviderExecutor.Execute(Instance, new ValueProviderExecutorSettings()
                                          .AddFilter(new DataMemberAttributeValueProviderFilter(false))
                                          .AddDefaultValueProvider());

            return(Instance);
        }
Пример #2
0
        public void Setup()
        {
            var typeControllerMock = new Mock <IResourceTypeController>();

            typeControllerMock.Setup(tc => tc.Create(It.IsAny <string>())).Returns(new TestResource());

            _typeControllerMock = typeControllerMock.Object;

            var resourceCreator = new Mock <IResourceGraph>();

            _resourceGraph = resourceCreator.Object;
        }
Пример #3
0
        public void Setup()
        {
            // Mock of the container
            var containerMock = new Mock <IContainer>();

            containerMock.Setup(c => c.GetRegisteredImplementations(It.IsAny <Type>()))
            .Returns(() => new[]
            {
                typeof(SimpleResource),
                typeof(DerivedResource),
                typeof(ReferenceResource),
                typeof(NonPublicResource),
                typeof(ResourceWithImplicitApi)
            });

            _typeController = new ResourceTypeController
            {
                Container    = containerMock.Object,
                ProxyBuilder = new ResourceProxyBuilder()
            };
            _typeController.Start();
        }
Пример #4
0
 public static TResource Proxify <TResource>(this TResource source, IResourceTypeController typeController)
     where TResource : class, IPublicResource
 {
     return((TResource)typeController.GetProxy(source as Resource));
 }
Пример #5
0
 public static IEnumerable <TResource> Proxify <TResource>(this IEnumerable <TResource> source, IResourceTypeController typeController)
     where TResource : class, IPublicResource
 {
     return(source.Select(r => r.Proxify(typeController)));
 }
Пример #6
0
 public virtual void Detach()
 {
     _typeController = null;
     Target          = null;
 }
Пример #7
0
 /// <summary>
 /// Create proxy for a given target
 /// </summary>
 protected ResourceProxy(TTarget target, IResourceTypeController typeController)
 {
     Target          = target;
     _typeController = typeController;
 }