2009-07-15 87 views
0

这里内我安装一个嵌套/链接功能是什么,我想设置如何做一个C#类

我班被命名为库存 我有一个静态函数命名List_Departments()

我会希望能够增加一个额外的功能,以修改先前

对于实施例:。Inventory.List_Departments()ToHTML()将返回含有来自List_Departments()中的数据

如果HTML格式的字符串可能我'我想重复使用相同的代码来处理另一个函数,如List_Categories()

我真的很感激在这个正确的方向微调。我似乎无法找到正确的术语/搜索术语来提取我需要的信息。非常感谢你的帮助,对于这个有些愚蠢的问题感到抱歉。

回答

1

基本上,你的函数List_Departments()和List_Categories正在返回一些键入的对象是否正确?也就是说,返回的对象必须在名为ToHTML()的类定义中创建一个Method。如果这两个函数返回相同类型的对象,那么您只需要定义一次。如果它们返回两种不同的类型,那么您将不得不在两个返回类型类定义上定义ToHTML()方法。

除非我在这里丢失了一些东西,否则这两个函数不需要静态修饰符。

如果返回类型是您没有源代码访问权限的类型,那么您可以为每个类型定义一个扩展方法来处理返回的对象类型,并可以为其显示ToHTML()。

+0

要小心,没有过度使用扩展方法... – bbqchickenrobot 2009-07-15 17:44:45

0

ToHTML()功能是作用于从List_Departments()

返回例如类型的函数:

如果Inventory.GetProduct(0)返回int。你可以使用Inventory.GetProduct(0).ToString(),因为ToString()是一个整数类型的方法。

为了做到这一点,List_Departments()还得回去,有一个叫ToHTML方法的自定义对象()说

public class Department() { 

    public HtmlDocument ToHTML() { 
     //Create the html document to return here 
    } 
} 
2

你需要使List_Departments方法返回一个具有ToHtml方法的对象。

取决于你的确切方法返回时,你可能会创建一个名为像链表类类,这将有ToHtml方法,并且有它的ListDepartmentsListCategories回报情况。

或者,特别是如果您的方法正在返回现有类如DataTable,那么可以为该类称为ToHtml制作extension method

1

你没有提供太多的信息,但使用Extension methods似乎是一个很好的方法给我。 一个例子打开一个字符串转换成一个int:

public static class StringMethods { 
    public static int ToInt(this String subject) { 
     int result; 
     int.TryParse(subject, result); 
     return result; 
    } 
} 

假设List_Departments回报Department

public static class DepartmentMethods { 
    public static string ToHtml(this Department subject) { 
     // Whatever you want to do. 
    } 
} 

如果你有存取权限由List_Departments返回类型的内部,也可以只添加ToHtml那里。

1

你要找的搜索词是方法链接:-)
http://www.bing.com/search?q=method+chaining

这是沿着什么jQuery也行的东西。基本上,你创建了一个包含所有你想要链接的方法的对象。然后,使用构建器模式,可以将所有调用链接在一起,直到调用一些最终的“结果”方法(ToHtml为例)。

public class Inventory 
{ 
    private IEnumerable<Departments> departments; 
    private IEnumerable<Items> items; 

    public Inventory ListDepartments() 
    { 
     // load up departments to a class level field 
     return this; 
    } 

    public Inventory ListItems() 
    { 
     // load up items to a class level field 
     return this; 
    } 

    public string ToHtml() 
    { 
     // convert whichever enumerable was previously loaded to HTML 
     return stringBuilder.ToString(); 
    } 
} 

这可以让你做的事情,如:

inventory.ListDepartments().ToHtml();