Roslyn按需动态编译方法

时间:2016-10-27 09:29:39

标签: c# roslyn

有没有人有一些使用Roslyn动态加载方法的指针?

在我的服务器中,我希望能够访问c#方法中的业务规则,并根据需要动态编译和运行它们。在我的情况下,我将有10,000条规则。在一次运行中只能访问一小部分规则(并且在运行期间不会更改)。规则需要能够互相呼叫。

规则如下: UpdatePriceSnippet.cs:

public static void UpdatePrice(string productId)
{
   if (productId.StartsWith("X"))
   {
      int price = GetPrice(productId);
      ABCCommon.DbUpdateProductPrice(productId, price*1.1);
   }
}

GetPriceSnippet.cs:

public static int GetPrice(string ProductId)
{
   return ABCCommon.DbReadProductPrice(productId);
}

在这种情况下,UpdatePrice方法将按需编译(通过加载和编译" {method} Snippet.cs")。同样,如果productId以" X"开头,则只会编译GetPrice。 ABCCommon将是一个预编译的程序集,其中包含规则的辅助方法。

0 个答案:

没有答案