我想执行一个功能,但在此之前,我想验证密码。
我选择使用代理设计模式。
用词:
创建代理类,
发送密码,
并告诉他如果密码没问题要执行什么功能。
问题是根据代理模式,整个内部应该/最好是私有的。
所以 - 我从 Method1/2 外面看不到...
而且我不想做Method1/2
public
(而且我不想要如果)。我想使用代表。
那么,我如何(从外部)向他发送有效的Action
参数?(ac
参数)
我应该为每个函数创建一个公共 Action 吗?
我想执行一个功能,但在此之前,我想验证密码。
我选择使用代理设计模式。
用词:
创建代理类,
发送密码,
并告诉他如果密码没问题要执行什么功能。
问题是根据代理模式,整个内部应该/最好是私有的。
所以 - 我从 Method1/2 外面看不到...
而且我不想做Method1/2
public
(而且我不想要如果)。我想使用代表。
那么,我如何(从外部)向他发送有效的Action
参数?(ac
参数)
我应该为每个函数创建一个公共 Action 吗?
通常,您要执行的方法不应该是您的代理类的一部分。这是这个类的调用者传递的方法:
public class ProxyClass
{
public ProxyClass(string password, Action ac)
{
if (password == "111")
{
ac();
}
}
}
然后你可以传递一个Action
作为第二个参数:
var proxy = new ProxyClass("111", () =>
{
... some code that you want to execute in case of success
});
或者如果您已经定义了一些方法:
public class Foo
{
public void Success()
{
... some code that you want to execute in case of success
}
}
你可以:
var foo = new Foo();
var proxy = new ProxyClass("111", foo.Success);
如果 Success 是一个静态方法,则不需要以下实例Foo
:
var proxy = new ProxyClass("111", Foo.Success);