簡體   English   中英

C#中的部分接口

[英]Partial Interface in C#

C#允許部分接口嗎? 即,在ManagerFactory1.cs類中,我有

public partial interface IManagerFactory
{
    // Get Methods
    ITescoManager GetTescoManager();
    ITescoManager GetTescoManager(INHibernateSession session);
}

在ManagerFactory.cs類中,我有:

public partial interface IManagerFactory
{
    // Get Methods
    IEmployeeManager GetEmployeeManager();
    IEmployeeManager GetEmployeeManager(INHibernateSession session);
    IProductManager GetProductManager();
    IProductManager GetProductManager(INHibernateSession session);
    IStoreManager GetStoreManager();
    IStoreManager GetStoreManager(INHibernateSession session);
}

ManagerFactory和ManagerFactory1都位於同一個程序集中。

最簡單的方法就是嘗試:)

但是,是的,允許部分接口。

partial修飾符的有效位置(使用C#3.0規范引用):

  • 課程(10.1.2)
  • 結構(11.1.2)
  • 接口(13.1.2)
  • 方法(C#3.0+)(10.2.7; 10.6.8)

規范的10.2節包含了部分類型的大部分一般細節。

無效的地點:

  • 枚舉
  • 代表

是的,它確實。

MSDN上的部分類和方法(C#編程指南)

限制:

  • 必須使用partial修改所有部分類型接口定義,即相同類型的partial
  • partial修飾符只能出現在關鍵字interface之前。
  • 必須在同一個程序集和相同的模塊(.exe或.dll文件)中定義所有部分類型定義,即相同類型的部分。

在涉及代碼生成時,主要使用部分接口。 例如,當生成接口的一部分而另一部分是用戶編寫的時。

確實如此,但一個重要的問題是什么?

部分類是存在的,因此您可以擴展自動生成的代碼。 VS可以生成表單文件或代碼隱藏,或者Linq到SQL訪問器,您可以使用部分擴展它。

我會避免使用partials來分割類(或者在這種情況下是接口),因為它通常會產生比它值得更多的混亂。

在這種情況下,我會調查為什么這需要跨越多個文件 - 工廠模式接口可以使跟蹤代碼更復雜,但在這里您將通過多個文件進行跟蹤。

是的, 確實如此

在使界面偏向之前請三思而后行。 也許最好把它分成兩個itnerfaces?

保持您的界面小而專注。 部分是代碼氣味。

尼斯。

我同意這可能是一種氣味,但我仍然可以想到這樣做的一個原因。

我目前正在為WPF和Silverlight開發應用程序MVVM框架。 我遇到的是WPF和Silverlight是如此不同,而不是在整個代碼中使用定義,部分接口/類實際上可以分離兩個框架之間的差異,並仍然保持代碼清潔和幾乎單一來源。

是的,它確實。 是否在同一名稱空間中定義了部分接口?

請參閱說明可以在類,結構或接口上使用的文檔

簡短:是的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM