我需要限制从特定方法调用方法。通过方法限制呼叫
例如:
我已经喜欢GetData()
的功能,我需要调用它的方法的签名是无效 SomeFUnction(string a, String b)
否则GetData
呼叫不应在编译时间本身是允许的。
我需要限制从特定方法调用方法。通过方法限制呼叫
例如:
我已经喜欢GetData()
的功能,我需要调用它的方法的签名是无效 SomeFUnction(string a, String b)
否则GetData
呼叫不应在编译时间本身是允许的。
不,你不能在编译时做它。
事实上,他*可以*在运行时执行它。在编译时他无法做到(没有外部工具)。 – 2011-03-06 07:13:39
是的,对不起,我错误地输入了。当然,我的意思是**编译**时间。 – 2011-03-06 07:14:06
所以我可以像调用类一样限制应该实现一个特定的接口。编译时我也需要这个。我是否可以通过对应该调用的方法使用任何约束来实现这一点? – Eldhose 2011-03-06 07:23:17
如果您只想限制可以从“SomeFuncion(...)”调用“GetData”,那么您可以通过将您的方法封装在类中(实例/静态)并将“GetData “私有方法,只能从你的”SomeFunction(...)“中调用它。你还可以在编译时限制这个限制!!
虽然,我相信你没有在这里分享确切的问题陈述。 相反,您正在分享一个想法,认为您可以解决您的问题!!
分享确切的问题陈述会给你更好的答案。
这不会创建编译时间中断。但是,如果测试覆盖范围触及GetData()的所有调用,则将通过分解测试来执行您正在查找的内容。
public void GetData()
{
// last method up the stack trace
var callingMethod = new StackTrace().GetFrame(1).GetMethod();
var returnType = callingMethod.ReturnType;
// throw exception if not okay
var callingMethodParameters = callingMethod.GetParameters();
// throw exception if not okay
// GetData implementation
}
也许你可以写这样的FxCop规则。 – Gabe 2011-03-06 07:07:12
我不认为你真的需要这个功能。是否有一个特殊的用例需要这个?这听起来像一个可怕的想法,没有明确的使用。 – 2011-03-06 07:59:18