是否可以使用部分结构来实现这样的结果: 有一个asp.net页面基类,定义如下:
public partial struct QuerystringKeys
{
public const string Username = "username";
public const string CurrentUser = "currentUser";
}
有一个asp.net页面,它继承自上面提到的基类,扩展了部分声明:
public partial struct QuerystringKeys
{
/// <summary>
/// The page number of the review instances list
/// </summary>
public const string Page = "page";
}
最终目标是一个QuerystringKeys结构,其中定义了所有三个常量字符串,可用于asp.net页面。
答案 0 :(得分:4)
您无法从结构中继承 - 并且部分类型无论如何都不会继承。它们只是多个源文件组合在一起创建一个类型。
我还不知道ASP.NET页面的细节,但重点是你不能有多个部分类型,每个部分类型使用相同的“基础”类型,但与它结合形成不同的类型。声明相同部分类型的多个源文件只需组合成一个一个,只有一种类型。
看起来你只是这样做来分享常量 - 这让我感到很难使用部分类型或继承。只需要一个CommonQueryKeys
静态类并适当地引用它。
答案 1 :(得分:3)
我不相信。
我对部分类的理解是,将尝试组合在程序集中共享相同名称的所有部分。在你的情况下,它不会知道你如何组合,并且会有很多重复的名字。
虽然您需要为每个页面使用不同的名称/范围类,但您可以使用抽象类实现类似的效果
答案 2 :(得分:1)
不,你不能这样做。当你想要了解ASP .NET页面时,我假设你希望结构包含在页面类声明中(如果没有,为什么不把它放在一个单独的代码文件中)?
如果您的结构仅用于保存常量字符串,请使用类并从基类继承。由于您不会创建它的实例,因此没有区别:
public class Test : Page
{
internal class QuerystringKeys : BasePage.QuerystringKeys
{
public const string Page = "page";
}
}
public class BasePage : Page
{
internal class QuerystringKeys
{
public const string Username = "username";
public const string CurrentUser = "currentUser";
}
}