内部インターフェイスは、クラスまたは名前空間のメンバーであることができますクラス?実際のインターフェイス使用の目的を壊さないでしょうか?C#のMSDNドキュメントインタフェースに従ってクラス
4
A
答えて
7
クラスは別の名前空間です。 したがって、インタフェースを使用して、クラス内のメソッド間を流れるデータに対してコントラクトを強制することも、より正確にインタフェースをスコープすることもできます。
2
何らかの理由で、そのインターフェイスがそのクラスのコンテキスト内でのみ意味をなさない場合は、そのように実装することで明確にしたいと考えています。
私は、この構想を一度も使用したことはありません。
3
これらは、クラス内で物事を分割したいときに便利です。
public class Invoice
{
public String Print(Type type)
{
IPrinter printer = null;
switch (type)
{
case Type.HTML:
printer = new HtmlPrinter(this);
break;
case Type.PDF:
printer = new PdfPrinter(this);
break;
default:
throw new ArgumentException("type");
}
printer.StepA();
printer.StepB();
printer.StepC();
return printer.FilePath;
}
private interface IPrinter
{
void StepA();
void StepB();
void StepC();
String FilePath { get; }
}
private class HtmlPrinter : IPrinter
{
//Lots of code
}
private class PdfPrinter : IPrinter
{
//Lots of code
}
public enum Type
{
HTML,
PDF
}
}
関連する問題
- 1. に従って指示に従って
- 2. クラスコードC++に従って実行コード
- 3. MSDNをusbキーに持っている
- 4. C#他のコンボボックスに従ってコンボボックスに項目を追加
- 5. C#デコレータパターンに従ったクラスを適切に単体テストする方法は?
- 6. メニューに従ってドロップ
- 7. パラメータに従ってソート
- 8. C++の内部クラスに代わって
- 9. C#&Linq:値リストに従ってリストメンバーをグループ化する
- 10. 入力グループアドオン要素は、このリンクに従った日付クラス
- 11. このクラス図はこのユースケース図に従って正しいですか?
- 12. jetbrainのMPSがJavaクラスのパッケージ構造に従っていない理由
- 13. xmlのcat_nameに従ってcat_descをfeatching
- 14. multideminsiol配列のキー値に従って
- 15. はこのパターンに従って、
- 16. 親の名前属性に従ってCSSクラスを変更する方法
- 17. ToUpperInvariant() - 推奨のMSDNが間違っていますか?
- 18. C標準に従って文字列が重なり合っていますか? C規格から
- 19. C++の従属クラスの生存期間は?
- 20. MSDNモバイルライブラリ
- 21. C#Hangmanゲーム:その後のユーザーの推測に従って更新しない
- 22. msdnの例ExtractMetaData
- 23. クラスのオブジェクトの配列をクラスの数値プロパティに従ってソートする方法
- 24. PHP設定クラスと従属クラスのベストプラクティス
- 25. C#グリッドビューのコンボボックスに従ってグリッドビューの列データを変更しますか?
- 26. 従業員クラスのPython
- 27. MVVMパターンに従ってグリッドビューをソート
- 28. (基本)goToNextに従ってgoToPrev関数?
- 29. TextviewがSeekbarに従っていない
- 30. IFに従って適用関数
個人的に私は1つのコードファイル内に多くのクラスのファンではありません。 – Paddy
この場合、依存性注入はより良い選択肢になりませんか?そのようにすれば、Print(印刷)を呼び出す人は、(IPrinterが実装されている限り)どのような方法で印刷すべきかを決めることができ、インボイスの複雑さを軽減すると同時に、HTMLやPDFよりも多くの種類のプリンタが可能になります。 –