网络核心:保留方法的多个类类型

时间:2019-07-14 10:20:48

标签: c# asp.net-core dependency-injection .net-core asp.net-core-mvc

我有一堆Class方法,这些方法带有一个图像URL列表,并将它们放入Tagbuilder,应用函数等。适应灵活设计的好方法是什么?我应该使用依赖注入吗?我只需要ImageURL和Title。

历史记录:

我最初是这样做的。我是初学者,了解到这种耦合并不是很好。

public void RunSomeprocess(List<string> ImageList)
{
....

然后有人想出了带有图像标题的字典,我改成了字典以保存URL和其他标题

public void RunSomeprocess(Dictionary<string,string> ImageList)
{
....

然后人们上了一堂课,一个有标题,另一个有长/高。我只需要两列是ImageSource和Title。处理这种情况的最佳方法是什么?

public class ImageListwithCaption
{
    string ImageSource {get;set;}
    string ImageTitle {get;set;}
    string ImageCaptionDescription {get;set;}


public class ImageListwithLengthHeight
{
    string ImageSource {get;set;}
    string ImageTitle {get;set;}
    int PixelWidth {get;set;}
    int PixelHeight{get;set;}

2 个答案:

答案 0 :(得分:0)

词典符合您的要求。您应该坚持这样做,直到需要其他字段,即宽度,高度。此时,您可以将imagelist重构为它自己的模型。

答案 1 :(得分:0)

在同一个名称空间中不能有两个具有相同名称的类。

您有一个需要List个图像的方法,而这些方法需要有一个Source和一个Title。您的“人员”希望在其Image类上具有其他但不同的属性。处理此问题的方法是定义一个基类Image,“ people”可以创建该基类的子类:

public class Image
{
    public string Source{ get; set; }
    public string Title{ get; set; }
}
public class ImageWithCaption : Image
{
    public string CaptionDescription{ get; set; }
}
public class ImageWithSize : Image
{
    public int PixelWidth{ get; set; }
    public int PixelHeight{ get; set; }
}

现在,您的方法可以接受IEnumerable中的Image,并且该方法的调用者可以自由传递ImageWithSizeImageWithCaption或他们梦dream以求的其他任何对象的列表下周

public void RunSomeprocess(IEnumerable<Image> ImageList)
{
}