我想扩展var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "mysql.exe", // assumes mysql.exe is in PATH
Arguments = "-u root --password=\"some-password\"",
RedirectStandardInput = true,
UseShellExecute = false
},
};
process.Start();
process.StandardInput.Write(File.ReadAllText("some-file.sql"));
类。目前,此类具有属性if (condition){
//we can write like this in c++
}
,Rectangle
,...,我想添加属性left
,right
,...
我知道我可以创建一些扩展方法,例如
topLeft
但我想将此添加为属性。我考虑过从topRight
继承并添加缺少的信息
public static Point TopLeft(this Rectangle rect)
{
return new Point(rect.Left, rect.Top);
}
但是Rectangle
是一个密封的类。
不能从密封类型“矩形”派生
因此无法扩展此类?
答案 0 :(得分:5)
您可以使用adapter pattern:
internal class RectAdapter
{
private Rect _rect;
public RectAdapter(Rectangle rect)
{
_rect = rect;
}
public Point TopLeft
{
get
{
return new Point(_rect.X, _rect.Y);
}
}
public Point TopRight
{
get
{
return new Point(_rect.X + _rect.Width, _rect.Y);
}
}
}
您不能从Rectangle
继承,但是可以将其用作构造函数参数。而且,如果您不想覆盖其他行为,只需使用Rectangle
将它们委托给_rect
,例如:
public void Intersect(Rectangle rect) => _rect.Intersect(rect);