怎样合理的定义自己模块的对外接口。 最近老大让我写一代码编辑器模块,让我自己定义这个模块的对外接口以及把模块再划分成更小的模块.以前基本是别人定义好了,我只要实现就可以,但现在要我来做,真的是片空白。在此想请各问的给出一些指导。老大还说什么低耦合,强内聚。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 模块接口,可以考虑使用web services 是初学者啊,绝对的初学!天天活很杂,基本什么都尝试过,裁WinCE,驱动程序,网络通讯,编写PLC,反正都摸过,就是只知道皮毛,所以现在做起是片空白了。比较痛苦 编辑器这块,应该是有开源的玩意在codeplex上有很多这类型的开源项目http://www.codeplex.com/site/search?query=code%20editor&ac=1 public partial class TextEditorPanel : UserControl { public TextEditorPanel() { InitializeComponent(); }#region 对外方法 /// <summary> /// 打开文件 /// </summary> /// <param name="s">文件名</param> /// <returns></returns> public int OpenFile(string s) { return 0; } /// <summary> /// 关闭文件 /// </summary> /// <returns></returns> public int CloseFile() { return 0; } /// <summary> /// 保存文件 /// </summary> public void SaveFile() { } /// <summary> /// 另存文件 /// </summary> /// <param name="s">保存的文件名</param> /// <returns></returns> public int SaveFileAs(string s) { return 0; } /// <summary> /// 向前查找字符串 /// </summary> /// <param name="s">被查找的字符串</param> /// <returns>找到字符串,返回字符串所在行号</returns> public int FindNext(string s) { return -1; } /// <summary> /// 向前查找字符串 /// </summary> /// <param name="s"></param> /// <returns>找到字符串返回字符串所在行号</returns> public int FindPre(string s) { return -1; } /// <summary> /// 跳转到指定行 /// </summary> /// <param name="lineIndex">行号</param> /// <returns>跳转成功返回0,行号不存在返回-1</returns> public int GoToLine(int lineIndex) { return 0; } /// <summary> /// 复制选中行 /// </summary> /// <returns>复制成功返回0</returns> public int CopySelectedLines() { return 0; } /// <summary> /// 粘贴选中行 /// </summary> /// <param name="desLineNum">粘贴的目标行号</param> /// <returns>粘贴成功返回0</returns> public int PasteSelectedLines(int desLineNum) { return 0; } /// <summary> /// 删除选中行 /// </summary> /// <returns>删除成功返回true</returns> public bool DeleteSelectedLines() { return true; } /// <summary> /// 向后替换文本中的字符串 /// </summary> /// <param name="sourceStr">替换的源字符串</param> /// <param name="targetStr">替换的目标字符串</param> /// <returns>替换成功返回ture</returns> public bool ReplaceNext(string sourceStr,string targetStr) { return true; } /// <summary> /// 向前替换文本中的字符串 /// </summary> /// <param name="sourceStr">替换的源字符串</param> /// <param name="targetStr">替换的目标字符串</param> /// <returns>替换成功返回ture</returns> public bool ReplacePre(string sourceStr, string targetStr) { return true; } /// <summary> /// 获取当前行的文本 /// </summary> /// <param name="str">当前行的字符串</param> /// <returns>当前行在文件的中的行号</returns> public int GetCurrentLine(ref string str) { return 0; }#endregion#region 属性 /// <summary> /// 设置编辑器的位置 /// </summary> private Point panelLoaction; public Point PanelLocation { set { panelLoaction = value; } get { return panelLoaction; } } /// <summary> /// 是否选中编辑器中的当前行 /// </summary> private bool lineSelected; public bool LinSelected { set { lineSelected = true; } get { return lineSelected; } } public struct PanleSize_t { public uint width; public uint heigth; } /// <summary> /// 设置编辑器尺寸 /// </summary> private PanleSize_t panelSize; public PanleSize_t PanelSize { set { panelSize = value; } get { return panelSize; } } /// <summary> /// 或取编辑器中的文件是否发生过编辑行为 /// </summary> private bool modified; public bool Modified { set { modified = value; } get { return modified; } } /// <summary> /// 是否允许编辑文件 /// </summary> private bool editingValid; public bool EditingValid { get { return editingValid; } } public enum EditingModels { Watch, WordModify, LineModify }; /// <summary> /// 设置编辑模式 /// </summary> private EditingModels editingModel; public EditingModels EditingModel { set { editingModel = value; } get { return editingModel; } } /// <summary> /// 设置行标记的“行标记”可见性 /// </summary> private bool lineMarkVisble; public bool LineMarkVisble { set { lineMarkVisble = true; } get { return lineMarkVisble; } } /// <summary> /// 设置编辑器“行标记”的颜色 /// </summary> private Color lineMarkColor; public Color LineMarkColor { set { lineMarkColor = value; } get { return lineMarkColor; } } /// <summary> /// 获取当前文件的总行数 /// </summary> private int lineCount=0; public int LineCount { get { return lineCount; } }#endregion把自己定义的一部分接口给贴出来,烦请各位指导 C# richtextbox中重写键盘事件光标问题。 C#文件传输 在GirdView中添加DropDownList后查询速度很慢 求正则! C# 连接 Oracle 远程服务器的字符串问题 在asp.net页面中用WebChart 生成的图片保存到excel中无法显示 关于动态控件销毁的问题 在winform里面,怎样把子窗体中的最小化,最大化去掉?只留关闭。 分页的一个问题 如何在窗体显示之前取消其显示。 如何生成 dat 文件? c#安装后,删除安装文件夹里面的文件,当重新运行程序时,会自动恢复所有文件,好像重新安装一样。
{
public TextEditorPanel()
{
InitializeComponent();
}
#region 对外方法 /// <summary>
/// 打开文件
/// </summary>
/// <param name="s">文件名</param>
/// <returns></returns>
public int OpenFile(string s)
{
return 0;
}
/// <summary>
/// 关闭文件
/// </summary>
/// <returns></returns>
public int CloseFile()
{
return 0;
}
/// <summary>
/// 保存文件
/// </summary>
public void SaveFile()
{ }
/// <summary>
/// 另存文件
/// </summary>
/// <param name="s">保存的文件名</param>
/// <returns></returns>
public int SaveFileAs(string s)
{ return 0;
}
/// <summary>
/// 向前查找字符串
/// </summary>
/// <param name="s">被查找的字符串</param>
/// <returns>找到字符串,返回字符串所在行号</returns>
public int FindNext(string s)
{
return -1;
}
/// <summary>
/// 向前查找字符串
/// </summary>
/// <param name="s"></param>
/// <returns>找到字符串返回字符串所在行号</returns>
public int FindPre(string s)
{ return -1;
}
/// <summary>
/// 跳转到指定行
/// </summary>
/// <param name="lineIndex">行号</param>
/// <returns>跳转成功返回0,行号不存在返回-1</returns>
public int GoToLine(int lineIndex)
{ return 0;
}
/// <summary>
/// 复制选中行
/// </summary>
/// <returns>复制成功返回0</returns>
public int CopySelectedLines()
{
return 0;
}
/// <summary>
/// 粘贴选中行
/// </summary>
/// <param name="desLineNum">粘贴的目标行号</param>
/// <returns>粘贴成功返回0</returns>
public int PasteSelectedLines(int desLineNum)
{
return 0;
}
/// <summary>
/// 删除选中行
/// </summary>
/// <returns>删除成功返回true</returns>
public bool DeleteSelectedLines()
{
return true;
}
/// <summary>
/// 向后替换文本中的字符串
/// </summary>
/// <param name="sourceStr">替换的源字符串</param>
/// <param name="targetStr">替换的目标字符串</param>
/// <returns>替换成功返回ture</returns>
public bool ReplaceNext(string sourceStr,string targetStr)
{
return true;
}
/// <summary>
/// 向前替换文本中的字符串
/// </summary>
/// <param name="sourceStr">替换的源字符串</param>
/// <param name="targetStr">替换的目标字符串</param>
/// <returns>替换成功返回ture</returns>
public bool ReplacePre(string sourceStr, string targetStr)
{
return true;
}
/// <summary>
/// 获取当前行的文本
/// </summary>
/// <param name="str">当前行的字符串</param>
/// <returns>当前行在文件的中的行号</returns>
public int GetCurrentLine(ref string str)
{
return 0;
}
#endregion
#region 属性 /// <summary>
/// 设置编辑器的位置
/// </summary>
private Point panelLoaction;
public Point PanelLocation
{ set
{
panelLoaction = value;
}
get
{
return panelLoaction;
}
}
/// <summary>
/// 是否选中编辑器中的当前行
/// </summary>
private bool lineSelected;
public bool LinSelected
{
set
{
lineSelected = true;
}
get
{
return lineSelected;
}
}
public struct PanleSize_t
{
public uint width;
public uint heigth;
}
/// <summary>
/// 设置编辑器尺寸
/// </summary>
private PanleSize_t panelSize;
public PanleSize_t PanelSize
{
set
{
panelSize = value;
}
get
{
return panelSize;
}
} /// <summary>
/// 或取编辑器中的文件是否发生过编辑行为
/// </summary>
private bool modified;
public bool Modified
{ set
{
modified = value;
}
get
{ return modified;
}
}
/// <summary>
/// 是否允许编辑文件
/// </summary>
private bool editingValid;
public bool EditingValid
{
get
{
return editingValid;
}
}
public enum EditingModels { Watch, WordModify, LineModify };
/// <summary>
/// 设置编辑模式
/// </summary>
private EditingModels editingModel;
public EditingModels EditingModel
{
set
{
editingModel = value;
}
get
{
return editingModel;
}
}
/// <summary>
/// 设置行标记的“行标记”可见性
/// </summary>
private bool lineMarkVisble;
public bool LineMarkVisble
{
set
{
lineMarkVisble = true;
}
get
{
return lineMarkVisble;
}
}
/// <summary>
/// 设置编辑器“行标记”的颜色
/// </summary>
private Color lineMarkColor;
public Color LineMarkColor
{
set
{
lineMarkColor = value;
}
get
{
return lineMarkColor;
}
}
/// <summary>
/// 获取当前文件的总行数
/// </summary>
private int lineCount=0;
public int LineCount
{
get
{
return lineCount;
}
}#endregion
把自己定义的一部分接口给贴出来,烦请各位指导