2013-10-03 36 views
0

如何扩展现有的类,并使用其他属性,方法或函数?所以我可以在XAML代码中使用它们? 我想扩展AlavonDock库并为现有类添加更多功能。扩展现有的类,具有附加功能

这就是我的意思: AvalonDock.dll应该在类LayoutItem中包含另一个Property:SubTitle。 我不想编辑现有的类(在AvalonDock库中)。但我想创建我自己的DLL,它扩展了AvalonDock.dll的功能。

+0

裹在你自己的班级,并实现您所希望的任何方法和属性。 – dasblinkenlight

+1

取决于你想要扩展的类;继承,封装,装饰模式,代理模式都可以在这里有所帮助。 –

回答

0

只是顺延类如您在其他类:

using AvalonDock; // or whatever the dll is called 

public class ExtendedClass : OriginalClassToExtend 
{ 
    private string subTitle = string.Empty; 

    public ExtendedClass() : base() 
    { 
     // Add new functionality to constructor 
    } 

    public string SubTitle { get; set; } 
} 

请大家看看Inheritance (C# Programming Guide)页面上MSDN获得更多帮助。

+0

我可以初始化一个基于'OriginalClassToExtend'实例的'ExtendedClass'实例吗?添加SubTitle并返回? – Toolkit

+0

我不确定''基于'OriginalClassToExtend'实例初始化'ExtendedClass'实例的含义,但是这遵循所有扩展类遵循的所有多态规则。因此,您可以将'OriginalClassToExtend'实例转换为'ExtendedClass'实例并在其上设置'SubTitle'属性。 – Sheridan

0

实现自己的类,从AvalonDock类派生并添加任何功能,你想

public class MyLayoutItem : LayoutItem 
{ 
    public string SubTitle 
    { 
     get { return (string)this.GetValue(SubTitleProperty); } 
     set { this.SetValue(SubTitleProperty, value); } 
    } 

    public static readonly DependencyProperty SubTitleProperty = DependencyProperty.Register("SubTitle", typeof(string), typeof(MyLayoutItem),new PropertyMetadata(string.Empty)); 
} 
+0

我已经创建了一个应用程序和两个库的例子。我的包装类,在第二个dll中,从第一个lib中的类继承。在应用程序的XAML中,我尝试创建第二个类的元素:。这不能instanciated,但我的第二个库中的类没有一个资源,在第一个库(用户控件)已经确定 – peter70

+0

这是原始消息:组件“ThemeEarthLibrary.ADWrapper”没有一个资源是由URI“/AvalonDock;component/yellowedit.xaml”。 – peter70

+0

@ peter70你的'sc'的xmlns是什么? –