这是工厂模式,其中一个属性用于通过Create
获得一个实例:用行动而不是Func键
public class Dialer
{
public static Func<Dialer> Create;
public bool MakeCall(string number) ...
public Dialer(IDialer impl) { ... }
}
然后lambda表达式分配给财产委托于特定平台项目与
Dialer.Create =() => new Dialer(new PhoneDialeriOS());
,并获得一个实例中与平台无关的项目,我用
this.dialer = Dialer.Create();
现在我希望使用
public static Action<Dialer> Create;
如果我得到这个权利,分配现在是
Dialer.Create = (d) => new Dialer(new PhoneDialeriOS());
但我如何得到一个实例?
this.dialer = // ?
通过使用this.dialer = Dialer.Create();
我得到
错误CS7036没有给定参数对应于“OBJ”的“操作”
但它并不需要的形式参数在这里传递PhoneDialeriOS
的实例是有意义的,因为在平台无关的代码中没有对它的访问。我认为我所关注的例子是误导性的,或者我错过了一些东西。
就是这样。该示例讲述了“公共静态操作 Create;',但这是不可能的,因为我无法传递该实例。 Imho的例子是错误的。 '公共静态行动创建;'是唯一正确的方法。 –
testing
'公共静态行动 Create'仍然是一个不返回任何内容的委托。我不确定你怎么可以考虑一个不能生产任何东西的工厂是“唯一正确的方法”。 –
Joey
你说得对。我做了一个复制和粘贴错误。 '公共静态函数创建;'是唯一正确的方法。 –
testing