小编Hob*_*org的帖子

我应该如何在多个LINQ-where子句之间共享过滤逻辑?

让我们A成为一个属性的阶级Hello.我想A在很多地方过滤这个属性的实例集合.因此,我会在某处创建一个类型的静态成员Expression<Func<A, bool>>,表示过滤谓词,并在我进行过滤的所有地方使用它.(这个谓词将由ORM转换为某个具体的DB特定表达式.)

下一个.存在具有类型B属性的类A.我想B通过与第一种情况中使用的逻辑相同的逻辑来过滤实例集合(按Hello类的属性A).

问题.实现这一点并减少代码重复的最正确方法是什么?

我的建议.添加三件事:1)IWithA具有类型属性的接口A,2)WithA<T>实现此接口的类IWithA并提供类型的属性T,3)Expression<Func<IWithA, bool>>实现过滤逻辑的类型的一些静态属性.演示代码如下.

    public static void Main() {
        var listOfAs = new List<A>().AsQueryable();
        var query0 = listOfAs
            .Select(a => new WithA<A> {
                A = a,
                Smth = a,
            })
            .Where(Filter);
        var listOfBs = new List<B>().AsQueryable();
        var query1 = listOfBs
            .Select(b => new WithA<B> {
                A …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

从Attribute转到CustomAttributeData或向后

题.有没有办法CustomAttributeData根据自定义属性的给定实例获取实例,比如说MyAttribute?或相反亦然?

我为什么需要这个?实例MyAttribute包含我感兴趣的属性,同时实例CustomAttributeData包含实际的构造函数的参数我很感兴趣,所以,现在我实现了双重的工作:第一,得到的实例MyAttribute调用

Attribute.GetCustomAttribute(property, typeof(MyAttribute)) as MyAttribute
Run Code Online (Sandbox Code Playgroud)

,第二,CustomAttributeData通过调用获取实例

CustomAttributeData.GetCustomAttributes(property)
Run Code Online (Sandbox Code Playgroud)

并走过这个系列.

PS我已经看过这个问题,但没有在那里找到理想的解决方案.

c# reflection custom-attributes system.reflection

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

应该为Docker中的TeamCity代理提供什么服务器URL?

问题.我正在尝试使用DockerUbuntu Linux 16.04.1 LTS上创建TeamCity基础结构(服务器和代理).我已经运行了一个带有jetbrains/teamcity-server映像的Docker容器,如本页所述.可以使用服务器的IP地址和端口8111通过Web浏览器访问TeamCity服务器.

现在我尝试使用本页所述的代理运行Docker容器.它写道:请注意,"localhost"通常不会工作,因为它将引用容器内的"localhost".好吧,当我向代理容器的运行脚本提供" http:// localhost:8111 ",或" http://127.0.0.1:8111 "或" http:// my_server_ip:8111 "时,我终于得到1 )"WARN - buildServer.AGENT.registration - 通过URL http:// localhost:8111(sic!always localhost)在服务器上注册时出错.将继续重复连接尝试."或2)"WARN - buildServer.AGENT.registration - 通过URL http:// localhost:8111/app/agents/protocols向服务器询问通信协议时出错."

此外,我试图揭示运行服务器的Docker容器的IP地址,并为代理运行脚本提供它.但结果是一样的.

问题.我应该提供什么服务器URL?使用DockerTeamCity配置中是否有任何隐含的步骤我想念?

linux teamcity continuous-integration docker

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