【发布时间】:2013-06-27 15:11:56
【问题描述】:
如何传递将在另一个类中定义的未知类型作为此类表达式中的参数。 不知道如何调用表达式。不知道为什么它不记得括号之间的类型以及解决方案是什么。
.AddCallHandler<asp.CallHandlerType>
守则:
foreach (IAspect asp in Policy.Aspects)
{
//Type callHandlerType = asp.CallHandlerType;
policy.AddMatchingRule(ruleLog)
.AddCallHandler<asp.CallHandlerType>(new
ContainerControlledLifetimeManager());
}
据说“asp”的类型或命名空间不存在。
我也尝试过更早地定义它并将其传递给“callHandlerType”,这又是一个类似的问题。
foreach asp 中的 CallHandler 类型会有所不同,在一个 它可能是 RestaurantCallHandler,另一个可能是 MagicCallHandler。 这些是在方面定义的。
接口的方法定义:
public interface IAspect
{
Type CallHandlerType { get; set; }
// e.g it can be "MagicCallHandler : ICallHandler
}
【问题讨论】:
-
那么你从哪里调用这个方法呢?你能把它变成一个通用方法吗?
-
@Jon Skeet 嗨,乔恩,是的,我可以。这是我为 Unity 编写的 AOP 框架。我正在发布接口方法的定义。对仿制药不专业,但总是使用它们。如果您将其更改为通用形式,请在致电后发布示例行用法。谢谢
-
啊,又看了一遍问题,我想我明白了。好的...这可以通过反射来完成。
-
我已经删除了我的答案,就像新接受的答案一样,我认为我的答案实际上并没有帮助......
-
@Jon Skeet 很明显,您的答案适用于这种情况和其他类似情况,我很感激,我想在更改所选答案之前获得您的许可,同时确定您会同意我的观点,Tuzo 的回答正是对这个问题的直接回答,不需要破解,无论如何,这类问题的破解总是有用的,很高兴知道,我很感激,再次感谢。
标签: c# delegates functional-programming unity-container anonymous-types