如何将要在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
我有一个运算符比较泛型类型的问题.
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)
是否可以检查变量泛型类型?
托比,提前谢谢
我们正在使用 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) 我想为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
.
是否可以组合/连接两个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(行)的子表.
我想测试一个删除方法.删除方法在模拟服务中调用(不用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?
提前致谢.