代码之家  ›  专栏  ›  技术社区  ›  synhershko

.NET 2.0-创建一个允许对象本身处理的编辑/添加的接口?

  •  1
  • synhershko  · 技术社区  · 15 年前

    public abstract class ContentEntryBase
    {
        public string UniqueIdentifier;
        public string Title;
    
        public abstract ContentType contentType { get;}
    }
    
    public class TextArticle : ContentEntryBase
    {
        // Holds plain / HTML text as content
    
        public override ContentType contentType { 
            get { return ContentType.TextArticle; } }
    }
    
    public class Series : ContentEntryBase
    {
        // Holds a series of TextArticles, Separators 
        // and Prefaces as content
    
        ContentEntryBase[] Articles = null;
    
        public override ContentType contentType { 
            get { return ContentType.Series; } }
    }
    

    我有一个利用这些类的WinForms应用程序,我希望它能够调用ContentryBase上的一个方法(意思是,在不知道手头对象的确切类型的情况下)来显示内容和编辑内容。

    例如,当访问TextArticle进行编辑时,它会显示一个TextBox/WYSIWYG编辑器,当访问TextArticle进行显示时,它会返回一个字符串。当访问该系列进行编辑时,它将显示它包含的所有元素(从ContentEntryBase派生)的列表,这些元素可以在其中进行编辑或排序。当访问以显示时,它将显示所有子项的列表。

    我试着想出最好的合同来定义这一点,但没有找到好的解决方案。这可以在WinForms和WebForms或MVC中使用吗?显示和编辑功能是否可以使用相同的合同/功能(GetContent()或其他)?

    提前谢谢!

    伊塔马尔。

    2 回复  |  直到 15 年前
        1
  •  0
  •   user164771 user164771    15 年前

    你能不能不要一份摘要 ShowEditor 方法。

    public class TextArticle : ContentEntryBase
    {
        public override void ShowEditor ()
        {
            var editor = new FrmTextEditor (this);
            editor.ShowDialog();
        }
    }
    

    FrmTextEditor 我们举了一个例子 TextArticle 它将修改哪些内容并提供UI来执行此操作?

    UserControl 它提供了相同的UI功能。

    **编辑**

    List<string> 根据需要填充 文本文章 DisplayObject 它包装字符串并提供其他数据供您在显示时使用。

        2
  •  0
  •   McKay    15 年前

    没有一个好的解决办法。WPF使这类事情成为可能,但您被困在2.0中。但即使使用WPF,它也是一个非常值得编写的应用程序。