這是工廠模式,其中一個屬性用於通過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