我正在使用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应用程序中,如果我覆盖这些静态变量或方法,那么它应该选择那些值,但是如何实现呢?
答案 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"; }
}
}