我需要限制从特定方法调用方法。
例如:
我有一个像GetData()
这样的函数,我需要它的调用方法的签名
无效SomeFUnction(string a, String b)
否则,编译时不应允许调用GetData
。
答案 0 :(得分:1)
不,你不能在编译时这样做。
答案 1 :(得分:1)
如果您只想限制“GetData”可以从“SomeFuncion(...)”调用,那么您可以通过将您的方法封装在类(实例/静态)中并制作“GetData”来轻松实现。方法private,只从你的“SomeFunction(...)”中调用它。你怎么能在编译时限制它!!。
尽管如此,我相信你并没有在这里分享确切的问题陈述。 相反,你正在分享一个你认为可能解决问题的想法!!
分享确切的问题陈述将为您提供更好的答案。
答案 2 :(得分:0)
这不会创建编译时间。但是,如果测试覆盖率达到了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
}