【发布时间】:2014-02-26 14:14:58
【问题描述】:
我正在开发 Windows Phone 8 应用程序。
我有一个 Windows Phone 类库项目(称为基)和 Windows Phone 应用程序(称为子)。
在我的 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 中,这些是我的应用程序的默认设置,但如果需要,我想更改这些设置,如果我不需要更改,那么默认设置应应用于我的子应用程序。
注意:我的 Base 将包含与我的应用相关的所有类,但我的子应用将仅包含应用特定的设置类。
我怎样才能做到这一点?
编辑
更具体:
在我的基地:
Class Demo : Settings
{
AppName = "XYX"
override TabDetails() and give new implemntation
}
现在在我的子应用程序中,如果我要覆盖这些静态变量或方法,那么它应该选择这些值,但是如何实现呢?
【问题讨论】:
-
如果“需要”?在编译时或运行时。通常如果您使用文件链接,那么您使用
#ifdef为不同的目标提供不同的实现。这仅适用于编译时间。 -
如果你想在运行时进行检查,那么只需让你的 lib 项目中的函数期望一个设置接口。然后传递接口或传递 null 以在运行时使用应用程序项目中的默认值。如果您使用 IoC,那么它会变得更加简单。但概念仍然成立。
-
@Viv 我没明白你的意思,你能给我举个例子吗
-
好的,刚刚看到您的编辑,这不是我认为您想要的。好吧,如果您在
Demo类中覆盖TabDetails(),则Demo类的任何对象在调用TabDetails()时都应该返回被覆盖的方法数据。这不是你现在得到的还是我仍然不明白你的问题是什么 -
是的,它会给我,但实施来自 BASE 而不是来自 CHILD,我想在子应用程序中做同样的事情
标签: c# wpf windows-phone-8 windows-phone class-library