覆盖图书馆计划的方法

时间:2014-02-26 14:14:58

标签: c# wpf windows-phone-8 windows-phone class-library

我正在使用Windows Phone 8应用程序。

我有一个Windows Phone Class Library项目(Called Base)和Windows Phone App(称为child)。

在我的Base项目中,我有一个包含方法和静态变量的类。

例如:

 Class Settings
    {

    public static string AppName = "Base";

    public virtual List<String> TabDetails()
            {
                List<String> TabDetails = new List<string>();
                helpTabDetails.Add("AAA");
                helpTabDetails.Add("BBB");
                return helpTabDetails;
            }

    } 

现在在我的子应用程序中我只是链接这个类(通过在拖放时按ALT我们可以链接类图像等...我没有在引用文件夹中添加引用)。

现在在我的Base中,这些是我的应用程序的默认设置,但是如果需要更改这些设置,如果我不需要更改,那么默认设置应该应用于我的子应用程序。

注意:My Base将包含与我的应用相关的所有课程,但我的子应用程序将仅包含应用程序特定的设置类。

我怎么能实现这个目标?

修改

更具体:

在我的基地:

 Class Demo : Settings
    {

    AppName = "XYX"

   override TabDetails() and give new implemntation

    }

现在在我的Child应用程序中,如果我覆盖这些静态变量或方法,那么它应该选择那些值,但是如何实现呢?

2 个答案:

答案 0 :(得分:1)

好的,经过长时间的聊天,终于得到了OP正在寻找的要求。

简单来说:

  • 他有一个名为AppSettings
  • 的界面
  • 名为DefaultSettings的类实现此接口
  • 另一个名为CustomSettings的类可以或不可以存在于项目中,该类也将实现AppSettings接口

问题是如何检查并使用ChildSettings如果其他人使用DefaultSettings

<强>解决方案

使用反射并检查类型的存在以及是否可以使用它。

AppSettings appSettings;
var customSettingsType = Type.GetType("POCChild.ChildSettings");
if (customSettingsType == null)
  appSettings = new DefaultSettings();
else
  appSettings = (AppSettings)Activator.CreateInstance(customSettingsType);

Debug.WriteLine(appSettings.getAppName());

其中"POCChild.ChildSettings"Namespace.ClassName

答案 1 :(得分:0)

好吧,覆盖属性值而不是函数。在Base类中使用以下代码:

class Settings
{
    public virtual string AppName
    {
        get { return "Base"; }
    }

    public virtual List<String> TabDetails()
        {
            List<String> TabDetails = new List<string>();
            helpTabDetails.Add("AAA");
            helpTabDetails.Add("BBB");
            return helpTabDetails;
        }

} 

class Demo : Settings
{
    public override string AppName
    {
        get { return "XYX"; }
    }
}