我有一个页面,包含AddPage.xaml和AddPage.xaml.cs。我想创建一个名为AddPage的泛型类,该类继承自PhoneApplicationPage,以外包一些重复代码,如Save或Cancel。 如果我将基类从PhoneApplicationPage更改为我的新泛型类,则会出现以下错误:Partial declarations of 'AddPage' must not specify different base classes.
我有一个页面,包含AddPage.xaml和AddPage.xaml.cs。我想创建一个名为AddPage的泛型类,该类继承自PhoneApplicationPage,以外包一些重复代码,如Save或Cancel。 如果我将基类从PhoneApplicationPage更改为我的新泛型类,则会出现以下错误:Partial declarations of 'AddPage' must not specify different base classes.
public class SaveCancelPhoneApplicationPage : PhoneApplicationPage
{
protected void Save() { ... }
protected void Cancel() { ... }
}
public partial class AddPage : SaveCancelPhoneApplicationPage { ... }
Xaml:
<local:SaveCancelPhoneApplicationPage
x:Class="MyPhone.Namespace.AddPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyPhone.Namespace"
<!-- other xaml elements -->
</local:SaveCancelPhoneApplicationPage>
更新: 根据评论添加信息
如果您需要具有类似通用功能的功能,并且必须使用页面来完成此操作(而不是ViewModel),则仍然可以使用通用方法来实现此目的。
public abstract class SaveCancelPhoneApplicationPage : PhoneApplicationPage
{
protected override void OnNavigatedTo(blaa,blaa)
{
var obj = CreateMyObject();
obj.DoStuff();
}
// You should know what your objects are,
// don't make it usable by every phone dev out there
protected MyBaseObject MyObject { get; set; }
protected T GetMyObject<T>() where T : MyBaseObject
{
return MyObject as T;
}
}
public class AddPage : SaveCancelPhoneApplicationPage
{
public AddPage()
{
MyObject = new MyAddObject();
}
}
为了外包一些函数,您只需声明一些附加类来执行常见工作。拥有另一页并不会完成这项工作。
public class Add
{
public bool SaveContent(string filename, string content)
{
....//some content
return true;
}
public string ViewContent(string filename)
{
string content="";
.....
return content;
}
}
Add obj=new Add();
obj.SaveContent("myfile.txt","Hello.This is my content.");
string content("myfile.txt");
请告诉我这是否是您想要的。
GenericClass<YourSpecificType>
的实心类并使用它即可。例如:class GenericClass<TType> : PhoneApplicationPage
,然后class SolidClass : GenericClass<SolidType>
。这符合您的要求吗? - Navigateur