public static void InvokeCommandViaJson(string commandString, TextWriter log)
        {
            MyDto command = JsonConvert.DeserializeObject <MyDto>(commandString);

            log.WriteLine($"Id:{command.Id}");
            log.WriteLine($"Name:{command.Name}");
        }
示例#2
0
        public void Has_Grid_Column_Style()
        {
            var noData = new List <MyDto>();
            var row    = new MyDto();
            Expression <Func <string> > forProperty = () => row.Name;

            var grid = RenderComponent <BlazorGrid <MyDto> >(
                Template <MyDto>(nameof(ChildContent), (dto) => (b) =>
            {
                b.OpenComponent(0, typeof(GridCol <string>));
                b.AddAttribute(1, nameof(GridCol <string> .For), forProperty);
                b.AddMarkupContent(2, "<span></span>");
                b.CloseComponent();

                b.OpenComponent(2, typeof(GridCol <string>));
                b.AddAttribute(1, nameof(GridCol <string> .For), forProperty);
                b.AddAttribute(3, nameof(GridCol <string> .FitToContent), true);
                b.AddMarkupContent(4, "<span></span>");
                b.CloseComponent();
            })
                );

            var scroller = grid.Find(".grid-scrollview");
            var style    = scroller.GetAttribute("style");

            Assert.AreEqual("grid-template-columns: minmax(auto, 1fr) max-content;", style);
        }
示例#3
0
        public void Can_Set_Custom_Attributes()
        {
            var row = new MyDto {
                Name = "Unit test"
            };
            Expression <Func <string> > colFor = () => row.Name;

            ProviderDelegate <MyDto> provider = (r, _) =>
            {
                return(ValueTask.FromResult(new BlazorGridResult <MyDto>
                {
                    TotalCount = 1,
                    Data = new List <MyDto> {
                        row
                    }
                }));
            };

            var grid = RenderComponent <BlazorGrid <MyDto> >(
                Parameter(nameof(BlazorGrid <MyDto> .Provider), provider),
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "title", "Hello world");
                builder.CloseComponent();
            })
                );

            var rowElement = grid.FindAll(".grid-row").Last();

            rowElement.MarkupMatches("<div class=\"grid-row\"><div title=\"Hello world\">Unit test</div></div>");
        }
示例#4
0
    public static T GetValueOf <T>(MyDto dto, string description)
    {
        if (string.IsNullOrEmpty(description))
        {
            throw new InvalidOperationException();
        }
        var props = typeof(MyDto).GetProperties().ToArray();

        foreach (var prop in props)
        {
            var atts = prop.GetCustomAttributes(false);
            foreach (var att in atts)
            {
                if (att is MyAttributeAttribute)
                {
                    string value = (att as MyAttributeAttribute).Value;
                    if (description.Equals(value))
                    {
                        return((T)prop.GetValue(dto, null));
                    }
                }
            }
        }
        return(default(T));
    }
示例#5
0
        public override void Setup()
        {
            base.Setup();

            DtoOne   = new FixtureBuilder <MyDto>().With(x => x.Name, "Bob").Object;
            DtoTwo   = new FixtureBuilder <MyDto>().With(x => x.Name, "Frank").Object;
            DtoThree = new FixtureBuilder <MyDto>().With(x => x.Name, "Bill").Object;
        }
示例#6
0
 static void Main(string[] args)
 {
     MyDto dto = new MyDto()
     {
         Property1 = "Value1", Property2 = "Value2"
     };
     string value = GetValueOf <string>(dto, "attribute1");
     // value = "Value1"
 }
示例#7
0
        public async Task <MyDto> CreateOnFileSystem(MyDto dto)
        {
            var dataFile = await DeserializeDataFile();

            dataFile.Data.Add(dto);

            await SerializeDataFile(dataFile);

            return(dto);
        }
示例#8
0
        /// <summary>
        /// 测试new实例注册
        /// </summary>
        private void Test03(IServiceCollection services)
        {
            var dto = new MyDto();

            //只有注册单例生命周期才能直接使用已实例化的对象,这是会将实例对象直接持久化到容器
            //以下两种写法相同效果
            services.AddSingleton(dto);
            services.AddSingleton <MyDto>(dto);

            //以下写法不存在,生命周期为瞬时和域内单例的,注册时只能提供构造方法或委托,不能直接注册实例
            //services.AddTransient(dto);
            //services.AddScoped(dto);
        }
    public IEnumerable <MyDto> GetItems()
    {
        IEnumerable <ApiDto> apiDtos = null;

        lock (theLock)
        {
            apiDtos = api.GetNonThreadSafeItems();
        }
        foreach (var apiDto in apiDtos)
        {
            var myDto = new MyDto(apiDto.Name);
            yield return(myDto);
        }
    }
示例#10
0
        public void Uses_Display_Name_As_Caption()
        {
            var row    = new MyDto {
            };
            var parent = new Mock <BlazorGrid <MyDto> >();
            Expression <Func <string> > colFor = () => row.NameWithCaption;

            var col = RenderComponent <GridCol <string> >(
                Parameter("For", colFor),
                CascadingValue("Parent", parent)
                );

            var caption = col.Instance.GetCaptionOrDefault();

            Assert.AreEqual("My caption", caption);
        }
示例#11
0
        public void Can_Set_Custom_Caption()
        {
            var row    = new MyDto {
            };
            var parent = new Mock <BlazorGrid <MyDto> >();
            Expression <Func <string> > colFor = () => row.Name;

            var col = RenderComponent <GridCol <string> >(
                Parameter("For", colFor),
                Parameter("Caption", "Unit test"),
                CascadingValue("Parent", parent)
                );

            var caption = col.Instance.GetCaptionOrDefault();

            Assert.AreEqual("Unit test", caption);
        }
示例#12
0
        public void Example_construct_using()
        {
            IMapper mapper = new MapperConfiguration(builder =>
            {
                builder.CreateMap <MyModel, MyDto>();

                builder.CreateMap <MyDto, MyModel>()
                .ConstructUsing(x => new MyModel(x.Id, x.Value));
            })
                             .CreateMapper();

            const int value = 5;

            MyDto   destination = mapper.Map <MyDto>(new MyModel(1, value));
            MyModel source      = mapper.Map <MyModel>(destination);

            source.Value.Should().Be(value);
            destination.Value.Should().Be(value);
        }
示例#13
0
        public void Example_ctor_param()
        {
            IMapper mapper = new MapperConfiguration(builder =>
            {
                builder.CreateMap <MyModel, MyDto>();

                builder.CreateMap <MyDto, MyModel>()
                .ForCtorParam("identifier", x => x.MapFrom(e => e.Id));
            })
                             .CreateMapper();

            const int value = 78;

            MyDto   destination = mapper.Map <MyDto>(new MyModel(1, value));
            MyModel source      = mapper.Map <MyModel>(destination);

            source.Value.Should().Be(value);
            destination.Value.Should().Be(value);
        }
示例#14
0
        public void Can_Merge_Css_Classes()
        {
            int providerCallCount = 0;

            ProviderDelegate <MyDto> provider = (BlazorGridRequest r, CancellationToken c) =>
            {
                providerCallCount++;

                return(ValueTask.FromResult(new BlazorGridResult <MyDto>
                {
                    Data = Enumerable.Repeat(new MyDto(), 3).ToList(),
                    TotalCount = 3
                }));
            };

            Services.AddSingleton <IBlazorGridConfig>(new Config.DefaultConfig());
            Services.AddSingleton <NavigationManager>(new MockNav());

            var row = new MyDto {
                Name = "Unit test"
            };
            Expression <Func <string> > colFor = () => row.Name;

            var grid = RenderComponent <BlazorGrid <MyDto> >(
                Parameter(nameof(BlazorGrid <MyDto> .Provider), provider),
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "class", "my-custom-class");
                builder.AddAttribute(3, nameof(GridCol <string> .AlignRight), true);
                builder.CloseComponent();
            })
                );

            Assert.AreEqual(1, providerCallCount);

            var rowElement = grid.FindAll(".grid-row").Last();

            rowElement.MarkupMatches("<div class=\"grid-row\"><div class=\"text-right my-custom-class\">Unit test</div></div>");
        }
示例#15
0
        public void Uses_Display_Name_As_Caption_With_Resources(string locale, string expectedCaption)
        {
            var row    = new MyDto {
            };
            var parent = new Mock <BlazorGrid <MyDto> >();
            Expression <Func <string> > colFor = () => row.NameWithResourceCaption;

            var culture = CultureInfo.GetCultureInfo(locale);

            Thread.CurrentThread.CurrentCulture   = culture;
            Thread.CurrentThread.CurrentUICulture = culture;

            var col = RenderComponent <GridCol <string> >(
                Parameter("For", colFor),
                CascadingValue("Parent", parent)
                );

            var caption = col.Instance.GetCaptionOrDefault();

            Assert.AreEqual(expectedCaption, caption);
        }
示例#16
0
        public void Header_Ignores_Custom_Attributes()
        {
            var row = new MyDto {
                Name = "Unit test"
            };
            Expression <Func <string> > colFor = () => row.Name;

            var grid = RenderComponent <BlazorGrid <MyDto> >(
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "title", "Hello world");
                builder.CloseComponent();
            })
                );

            var rowElement = grid.FindAll(".grid-row").First();

            rowElement.MarkupMatches("<header class=\"grid-row grid-header\"><div class=\"sortable\"><span class=\"blazor-grid-sort-icon\"></span></div></header>");
        }
示例#17
0
        private static async Task SendSmallMessages(int count)
        {
            WriteLine($"Waiting 5 seconds for {count} small message requests");
            await Task.Delay(5000);

            await _client.SendAsync(new StartTimerMessage(count), Serializer);

            for (int i = 0; i < count; i++)
            {
                var dto = new MyDto()
                {
                    Collision = Guid.NewGuid(),
                    Id        = i,
                    Name      = $"MyDto{i}",
                    When      = DateTime.Now
                };

                await _client.SendAsync(dto, Serializer);
            }

            await _client.SendAsync <StopTimerMessage>(Serializer);
        }
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     var obj = new MyDto { Foo = "abc", Bar = 234 };
     var clone = Serializer.DeepClone(obj);
     ((Button)sender).Content = clone.Foo + ", " + clone.Bar;
 }
示例#19
0
 public string DoSomething(MyDto data)
 {
     return(string.Format("I did something at {0} with {1}", DateTime.Now, data.MyProperty));
 }
示例#20
0
 public MyDtoEventArgs(MyDto myDto)
 {
     this.MyDto = myDto;
 }
示例#21
0
 /// <summary>
 /// 构造注入
 /// </summary>
 /// <param name="myDto1"></param>
 /// <param name="myDto2"></param>
 public Test05Controller(MyDto myDto1,
                         OtherDto otherDto)
 {
     _myDto1   = myDto1;
     _otherDto = otherDto;
 }
示例#22
0
 public async Task WriteAsync(MyDto dto)
 {
     await channel.Writer.WriteAsync(dto);
 }
示例#23
0
 /// <summary>
 /// 构造注入
 /// </summary>
 /// <param name="myDto1"></param>
 /// <param name="myDto2"></param>
 public Test04Controller(MyDto myDto1, MyDto myDto2)
 {
     _myDto1 = myDto1;
     _myDto2 = myDto2;
 }
示例#24
0
 protected bool Equals(MyDto other)
 {
     return string.Equals(Lastname, other.Lastname) &&
         string.Equals(Firstname, other.Firstname);
 }
 public static void InvokeCommandViaDtoError(MyDto command, TextWriter log)
 {
     log.WriteLine($"Id:{command.Id}");
     log.WriteLine($"Name:{command.Name}");
 }
 public void UpdateDTO(MyDto dto)
 {
     // For update or delete, wrap the calls to the remote
     // service in your RIA services like this.
     RemoteWCF.UpdateMethod(dto);
 }
示例#27
0
        public void Can_Modify_Columns()
        {
            var row = new MyDto();
            Expression <Func <string> > colFor = () => row.Name;

            var grid = RenderComponent <BlazorGrid <MyDto> >(
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "Caption", "Name");
                builder.CloseComponent();

                builder.OpenComponent <GridCol <string> >(3);
                builder.AddAttribute(4, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(5, "Caption", "Also name");
                builder.CloseComponent();
            })
                );

            // Verify that two columns are rendered
            var rowElement = grid.FindAll(".grid-row").First();

            rowElement.MarkupMatches("<header class=\"grid-row grid-header\">" +
                                     "<div class=\"sortable\">Name<span class=\"blazor-grid-sort-icon\"></span></div>" +
                                     "<div class=\"sortable\">Also name<span class=\"blazor-grid-sort-icon\"></span></div>" +
                                     "</header>"
                                     );

            VerifyColumnCount(grid, 2);

            // Change the ChildContent to only contain one column
            grid.SetParametersAndRender(
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "Caption", "Name");
                builder.CloseComponent();
            })
                );

            Assert.AreEqual(3, grid.RenderCount);

            // Verify that only one column is rendered
            rowElement = grid.FindAll(".grid-row").First();
            rowElement.MarkupMatches("<header class=\"grid-row grid-header\">" +
                                     "<div class=\"sortable\">Name<span class=\"blazor-grid-sort-icon\"></span></div>" +
                                     "</header>"
                                     );

            VerifyColumnCount(grid, 1);

            // Change it back to two columns
            grid.SetParametersAndRender(
                Template <MyDto>(nameof(ChildContent), (context) => (RenderTreeBuilder builder) =>
            {
                builder.OpenComponent <GridCol <string> >(0);
                builder.AddAttribute(1, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(2, "Caption", "Name");
                builder.CloseComponent();

                builder.OpenComponent <GridCol <string> >(3);
                builder.AddAttribute(4, nameof(GridCol <string> .For), colFor);
                builder.AddAttribute(5, "Caption", "Also name");
                builder.CloseComponent();
            })
                );

            Assert.AreEqual(5, grid.RenderCount);

            // Verify that two columns are rendered
            rowElement = grid.FindAll(".grid-row").First();
            rowElement.MarkupMatches("<header class=\"grid-row grid-header\">" +
                                     "<div class=\"sortable\">Name<span class=\"blazor-grid-sort-icon\"></span></div>" +
                                     "<div class=\"sortable\">Also name<span class=\"blazor-grid-sort-icon\"></span></div>" +
                                     "</header>"
                                     );

            VerifyColumnCount(grid, 2);
        }