我正在改变这个问题,因为它看起来很模糊。
我有一个强制实现n个方法的接口。每种方法都有不同的参数。我使用了2个实现,一个在DMZ中,一个在我的应用服务器中。称它们为Communicator和Handler,一个发送它,另一个实现它。
根据它们运行的环境或应用程序注入接口。我基本上想通过线路传递参数,因此我可以完全按照在DMZ端调用的方法调用该方法。
无论调用哪种方法,我如何能够始终如一地序列化所有参数并通过线路传递它们,以便在我可以实际执行它们的环境中调用它?
答案 0 :(得分:3)
您可以更改TestMethod以接收params
数组:
public string TestMethod(params object[] args)
{
// do stuff
}
答案 1 :(得分:0)
你的问题有点令人困惑,但我想我可能知道你在追求什么......
您可以使用像Ninject这样的工具使用依赖注入/反转控制。您仍然需要向注射系统询问物体的实例,但只要您正确设置了绑定,DI系统就会为您处理所有连接。
查看wiki for Ninject,了解其确切运作方式。值得注意的是,那里有很多DI / IoC框架,所以你可能想做一些研究来决定哪一个最适合你。我能想到的少数几个是:
答案 2 :(得分:0)
我认为使用其编译时名称访问本地变量没有安全的运行时方式。
答案 3 :(得分:0)
就序列化而言,您可以使用
static Type[] MyMethod(int a, string b, DateTime c, object d)
{
var myParams = MethodBase.GetCurrentMethod().GetParameters();
return myParams.Select(p => p.ParameterType).ToArray();
}
该示例显示了您需要告诉您正在处理的序列化程序的类型。
显然我的示例有点偏离,因为您不希望您的方法返回Type[]
...这是出于我自己的测试目的,但它向您展示了如何获取当前方法的类型。
除了获取实际值之外,似乎没有办法做到这一点,除非你使用params
(如上所述)或某种dynamic proxy(从未玩过它,不是正面的它将满足您的需求)。否则,在运行时,数据将无法访问。有关说明,请参阅here和here。