---
# System prepended metadata

title: C# 式木 を使って、ジェネリック型を持つメソッドを実行する 2021-09-17
tags: [C#, 式木, ジェネリック型]

---

---
lang: ja-jp
breaks: true
---
# C# 式木 を使って、ジェネリック型を持つメソッドを実行する 2021-09-17

> How to Call a Generic Method using "Expression.Parameter" and "Expression.Call" APIs
> https://stackoverflow.com/questions/33663439/how-to-call-a-generic-method-using-expression-parameter-and-expression-call

## 試してみたが、普通にいけるっぽい

```csharp=
    class RequestBase
    {

    }

    class RequestEx : RequestBase
    {

    }
・・・
        public int GetResponse<TRequest>(TRequest req) where TRequest: RequestBase
        {
            Type RequestType = typeof(TRequest);

            var target = Expression.Parameter(RequestType, "target");
            return 0;
        }
```

:::warning
`TRequest`に指定するクラスがあるDLLが読み込まれている状態で実行しないと駄目な気がする。
:::

###### tags: `C#` `式木` `ジェネリック型`
