通过指定功能名称触发功能

时间:2011-12-26 18:51:03

标签: c# asp.net reflection triggers

我正在建立一个网站,在某些操作完成后会发送电子邮件通知。截至目前,我有一个通用的通知函数,在某些区域调用参数来引用包含该消息的数据库记录等。

我想知道是否有任何方法可以像这样动态制作触发器,因此在网站的不同区域添加/删除触发器不需要代码隐藏更改。我正在考虑使用反射和命名空间/函数调用从数据库加载的触发器,但我认为这会对性能产生重大影响。

1 个答案:

答案 0 :(得分:1)

反射确实没有那么大的性能影响,特别是当你第一次进行查找后考虑缓存函数指针时。

这是一个简单的尖峰,可能无法编译或工作,但应该让你走上正确的道路:

var type = Type.GetType("System.DateTime");
var parser = type.GetMethod("Parse");
Console.WriteLine(parser.Invoke(null, "2012-01-01 12:00"));

Parser是一个MethodInfo对象,可以缓存以供以后使用。调用调用并不比直接调用DateTime.Parse更差。如果我不得不猜测,那么最慢的调用就是Type.GetType,尽管我们并没有谈论很多时间,但肯定是在ms规模上。

如果您也可以提供更多信息,有可能有人可以指出您更好的方向。也许有点DI或IoC信息是​​相关的。