我有一堆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;}
答案 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
,并且该方法的调用者可以自由传递ImageWithSize
或ImageWithCaption
或他们梦dream以求的其他任何对象的列表下周
public void RunSomeprocess(IEnumerable<Image> ImageList)
{
}