在介面中宣告建構函式簽章
在 C# 中,介面可以定義方法的簽名,但不能包含建構子。這帶來了獨特的挑戰,特別是在您希望在物件實例化期間存取某些屬性或資源的情況下。
替代方法:
IObservable 模式:
IObservable 模式:
靜態介面(未來概念):
介面中建構函式定義的意思:
在介面中定義建構子會在類別推導中帶來挑戰。衍生類別將繼承介面的建構函數,可能導致簽章不相容和程式碼損壞。public interface IParameterlessConstructor { public IParameterlessConstructor(); }
例如,如果介面定義了無參數建構子:
public class Foo : IParameterlessConstructor { public Foo() // As per the interface { } }
並且基類實現了它:
public class Bar : Foo { // Yikes! We now don't have a parameterless constructor... public Bar(int x) { } }
衍生類別將無法使用以下方式定義自己的建構子參數:
最終,雖然建構子無法在介面中明確定義,但可以採用各種變通方法和設計模式來實現所需的功能,而不會影響介面的目的。以上是C# 介面不允許建構函式簽名,如何在物件實例化過程中存取資源?的詳細內容。更多資訊請關注PHP中文網其他相關文章!