按照MSDN文檔界面內可以是一個類或命名空間的成員:C# - 接口類
例如,我可以聲明:
public class Test
{
public interface IMemberofTest
{
void get();
}
}
什麼用內部具有接口的一類?它不會破壞真正的界面使用的目的嗎?
按照MSDN文檔界面內可以是一個類或命名空間的成員:C# - 接口類
例如,我可以聲明:
public class Test
{
public interface IMemberofTest
{
void get();
}
}
什麼用內部具有接口的一類?它不會破壞真正的界面使用的目的嗎?
該類是另一個命名空間。 因此,該接口可用於強制在類中的方法之間傳遞的數據上籤訂合同,或者僅用於更精確地限定接口範圍。
如果出於某種原因,該接口僅在該類的上下文中才有意義,並且您希望通過像這樣實現它來清除它,則不是這樣。
我必須說,我從來沒有使用這個構造一次,因爲它是值得的。
當你想在課堂上分解東西時,它們很有用。
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
}
}
個人而言,我不是一個代碼文件中許多類的粉絲 - 我發現它只是使事情很難找到。 – Paddy 2009-08-23 09:38:44
在這種情況下,不依賴注入是否更好?通過這種方式,您可以讓任何打印者決定打印的方式(只要實施IPrinter),從而降低發票的複雜性,同時允許使用比HTML和PDF更多類型的打印機(例如模擬) 。 – 2009-08-23 09:58:36