有没有人有一些使用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将是一个预编译的程序集,其中包含规则的辅助方法。