小编Tob*_*ias的帖子

Linq查询的Lambda表达式在变量中

如何将要在linq查询中使用的lambdaexpression定义为变量?

例如,当按列表项的不同属性对通用列表进行排序时:

 IList<SampleClass> list = new List<SampleClass>();

 // Populate list
 ...

 list.OrderBy(sampleclass => sampleclass.property1);
 list.OrderBy(sampleclass => sampleclass.property2);
Run Code Online (Sandbox Code Playgroud)

我想在一个变量中定义lambda表达式(sampleclass => sampleclass.property1)并调用:

// ??? define expression in a variable ???
Expression expression = sampleclass => sampleclass.property1;

// Sort list by variable expression
list.OrderBy(expression);
Run Code Online (Sandbox Code Playgroud)

在此先感谢Tobi

c# linq sorting lambda expression

3
推荐指数
1
解决办法
2522
查看次数

C#:是具有继承的泛型类型的运算符

我有一个运算符比较泛型类型的问题.

 public interface ISomeInterface<T> where T : SomeBaseClass{
 }

 public class SomeClass : SomeBaseClass{
 }
Run Code Online (Sandbox Code Playgroud)

现在我们想用is运算符检查类型.我们有一个实现接口ISomeInterface的类的实例.

不幸的是,我们面临以下问题:

 // someObject is an Instance of a class implementing interface ISomeInterface<SomeClass>
 bool isSomeBaseClass = someObject is ISomeInterface<SomeBaseClass>; // false
 bool isSomeClass = someObject is ISomeInterface<SomeClass>; // true
Run Code Online (Sandbox Code Playgroud)

是否可以检查变量泛型类型?

托比,提前谢谢

c# generics operators

3
推荐指数
2
解决办法
2652
查看次数

Swagger/NSwag:重新定义参数类型

我们正在使用 swagger/nswag 来记录 webapi 项目。

作为ActionMethods 的BodyParameters,我们使用带有后缀Command 的类,这些类包含用于例如创建在数据库中持久化的域对象的参数。

Command-Class 可能如下所示:

public class CreateChildCommand {
    public Parent Parent { get; set; }
    public int Position { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Position 是一个简单的 int,而 Parent 是一个持久化在数据库中的域类。可能它看起来像这样:

public class Parent {

    public Guid Id { get; set; }
    public string Name { get; set; }
    ...
}
Run Code Online (Sandbox Code Playgroud)

它可以通过其 ID 从数据库加载,因此我们只需将 id 作为参数传递给 Json 中的 Command-Parameter,如下所示:

{
    "Position": 3,
    "Parent": "41E71207-7F1E-4895-8BCC-14E1293A7907"
}
Run Code Online (Sandbox Code Playgroud)

反序列化 Json 时,父级通过 Dao 由其 Id 加载。现在的问题是,那个 swagger/nswag 不理解那个“魔法”,并像这样显示方法的参数:

{
    "Position": number, …
Run Code Online (Sandbox Code Playgroud)

c# json swagger asp.net-web-api2 nswag

3
推荐指数
1
解决办法
3147
查看次数

将Style应用于特定类型的所有子元素

我想为wpf编写一个样式,其中StatusBar中的所有按钮(具有已定义的样式)具有相同的样式(例如宽度).

这是我的风格:

<Style TargetType="{x:Type StatusBar}"
               x:Key="DialogBoxStatusBarStyle">
    <Setter Property="Background"
                    Value="LightGray" />
    <Setter Property="Padding"
                    Value="5" />

    ...?

</Style>
Run Code Online (Sandbox Code Playgroud)

和元素的xaml:

<StatusBar Style="{StaticResource ResourceKey=DialogBoxStatusBarStyle}" Grid.Row="3"
               FlowDirection="RightToLeft">
        <Button Content="Übernehmen"
                Width="100"
                HorizontalAlignment="Right" />
        <Button Content="Abbrechen"
                Width="100"
                HorizontalAlignment="Right" />

        <Button Content="OK"
                Width="100"
                HorizontalAlignment="Right" />
    </StatusBar>
Run Code Online (Sandbox Code Playgroud)

在最终版本中,我不想为所有按钮将宽度设置为100.这应该按照风格StatusBar或者更好的方式来定义按钮 - 孩子的风格StatusBar.

c# wpf xaml styles

1
推荐指数
1
解决办法
1393
查看次数

Selenium:更改By-instance或concat两个By-instances

是否可以组合/连接两个Bys?

如果我有一个 By

By parentBy = new By.xpath(".//div[@class='parent']")
Run Code Online (Sandbox Code Playgroud)

和另一个 By

By childBy = new By.xpath(".//div[@class='child']")
Run Code Online (Sandbox Code Playgroud)

是否可以将两个Bys连接到具有此xpath的新Bys?

By combinedBy = new By.xpath(".//div[@class='parent']/div[@class='child']")
Run Code Online (Sandbox Code Playgroud)

就像是

By combinedBy1 = parentBy + childBy
By combinedBy2 = parentBy.Concat(childBy)
Run Code Online (Sandbox Code Playgroud)

用例:

我们使用页面对象模型.

现在我有一个表作为一种子页面对象模型.该表应该有一个选择一些数据的方法.由于一些html结构问题(它是第三方),我必须通过检查一个单元格的类和该单元格的文本/内容来xpath一个div(行)的子表.

java selenium xpath findby selenium-webdriver

1
推荐指数
2
解决办法
2523
查看次数

使用moq时包含的问题

我想测试一个删除方法.删除方法在模拟服务中调用(不用moq模拟).

该服务管理对象列表.对象的类派生自覆盖equals()的基类.

 public override bool Equals(object obj) {
        if (obj == null || GetType() != obj.GetType()) {
            return false;
        }

        BaseClass testObj = (BaseClass)obj;
        return BusinessId.Equals(testObj.BusinessId);

    }
Run Code Online (Sandbox Code Playgroud)

我打电话的时候

 serive.GetAll().Contains(objectInList);
Run Code Online (Sandbox Code Playgroud)

我弄错了.

不调用基类中的Equals方法.列表中的对象使用moq进行模拟.

 Mock<TypeOfObject> objectMock = new Mock<TypeOfObject>();
 objectMock.SetupGet(pf => pf.BusinessId).Returns(guid);
 return objectMock.Object;
Run Code Online (Sandbox Code Playgroud)

我如何设置模拟调用基类的Equals-Methode并且Contains-method返回true?

提前致谢.

c# moq contains equals

0
推荐指数
1
解决办法
988
查看次数