Возвращая вложенное универсальное Выражение <Func <T, bool>>

Как это:

html,
body {
    margin: 0;
    padding: 0;
}
.wrap {
    height: 100vh;
    display: grid;
    grid-gap: 3px;
    grid-template-columns: repeat(12, 1fr);
    grid-template-rows: 100px auto 100px;
}

.headNav {
    position: relative;
    grid-column: 1 / -1;
    overflow: hidden;
    /* background: #000; */
}


.menu {
    grid-column: 1 / 3;
    grid-row: auto;
    /* background: pink; */
}

.content {
    grid-column: 3 / -1;
    /* background-color: blue; */
}

.footer {
    grid-column: 1 / -1;
    /* background: #000; */
}

.body {
    background-image: linear-gradient( 
                    rgba(0, 31, 63, 0.958), 
                    rgba(0, 31, 63, 0.958) ) 
                    ,url(./img/bgmain.jpg);
    background-size: cover;
}

.logo {
    display: inline;
}

.logo > img  {
    display: inline;
    padding-top: 10px;
    height:80px;
    padding-left: 20px;
}

.link, ul, li {
    display: inline;
    list-style-type: none;
}

.link {
    position: absolute;
    top: 45px;
    left: 32.2%;
}

 li a {
    font-family: 'Raleway', sans-serif;
    font-weight: 900;
    text-transform: uppercase;
    text-decoration: none;
    font-size: 20px;
    color: #fff;
}

ul {
  border-bottom: 2px solid blue;
}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Jury Gregorio - Homepage</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="main.css">
    <link href="https://fonts.googleapis.com/css?family=Raleway" rel="stylesheet">
</head>
<body>
    <div class="wrap body">
        <div class="headNav">
            <div class="logo"><img src="./img/logo.png" alt="Logo"></div>
            <div class="link">
                <ul>
                <li><a href="">Home</a></li>
                <li><a href="">About</a></li>
                <li><a href="">Blog</a></li>
                <li><a href="">Contact</a></li>
                </ul>
            </div>
        </div>
        <div class="menu"></div>
        <div class="content"></div>
        <div class="footer"></div>
    </div>
</body>
</html>

7
задан Community 23 May 2017 в 10:29
поделиться

3 ответа

Вам нужно сделать сам метод универсальным:

public static Expression<Func<T, bool>> MakeFilter<T>(string prop, object val)
                                                  -+-
                                                   ^
                                                   +- this
10
ответ дан 6 December 2019 в 14:09
поделиться

Для вашего метода не определен общий аргумент. Вы должны определить один ( MakeFilter ):

public static Expression<Func<T, bool>> MakeFilter<T>(string prop, object val)
{
    ParameterExpression pe = Expression.Parameter(typeof(T), "p");
    PropertyInfo pi = typeof(T).GetProperty(prop);
    MemberExpression me = Expression.MakeMemberAccess(pe, pi);
    ConstantExpression ce = Expression.Constant(val);
    BinaryExpression be = Expression.Equal(me, ce);
    return Expression.Lambda<Func<T, bool>>(be, pe);
}
3
ответ дан 6 December 2019 в 14:09
поделиться

Метод должен быть объявлен как универсальный ( MakeFilter ):

public static Expression<Func<T, bool>> MakeFilter<T>(string prop, object val)

В противном случае, как еще вызывающий может указать, что T равно?

2
ответ дан 6 December 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: