Tag: inheritance

扩展页面类

是否可以在C#的WPF工具包(或者其他任何WPF类)中扩展“Page”类? 我试图做的: public class ExtendedPage : Page{ protected void doStuff(){ // lots of joy n pleasure } } public partial class RandomWindow : ExtendedPage{ private void randomMethod(){ doStuff(); // causes error } } 我问的原因非常明显:在扩展Page-class(ExtendedPage)之后,子类(RandomWindow)无法访问其基类的方法。 这是(至少是我的猜测)由RandomWindow偏离的情况引起的。 由于这个类不幸是由WPF生成的(链接到相应的* .xaml),我无法找到部分类的其他部分。 这个问题可能导致一个非常明显的答案,让我看起来像一个完全白痴,但显然我无法弄明白。 我可能会补充一点,我刚刚开始使用C#,我的编程起源是Java。 确切的错误消息是“’type’的部分声明不能指定不同的基类”(CS0263)。 作为对其中一条评论的回应:* .xaml中的“Page”声明似乎生成了一个代码隐藏文件,其基类是“Page”(而不是ExtendedPage)。 改变这似乎也不起作用,编译器抱怨没有找到类型的ExtendedPage。 // to

检查对象是否与给定列表中的任何类型匹配的替代方法

if (this.Page is ArticlePage|| this.Page is ArticleListPage) { //Do something fantastic } 上面的代码是有效的,但考虑到可能有很多不同的类,我想比较this.Page to,我想将类存储在列表中,然后在列表上执行.Contains() 。 我怎么做到这一点? 我会以某种方式使用GetType()吗? 我可以存储一个Page对象列表,然后以某种方式比较这些类型吗? 注意:您可以假设我正在比较this.Page所有类以扩展Page 。

C#中的generics和inheritance

我有ER设计师生成的实体类,我修改了一下。 这是声明: public abstract partial class Preference : EntityObject, IPreference 然后有另一个实体类声明如下: public partial class BoolPref : Preference 所以BoolPrefinheritance自Preferences 。 现在我有了这个生成的属性: public ObjectSet<Preference> Preferences { get { if ((_Preferences == null)) { _Preferences = base.CreateObjectSet<Preference>(“Preferences”); } return _Preferences; } } private ObjectSet<Preference> _Preferences; 当我尝试将新的BoolPref添加到此ObjectSet时,如下所示 context.Preferences.AddObject(new BoolPref ()); 我得到编译时错误。 如何将BoolPref的实例添加到首选项? mystake在哪里?

entity framework6运行时错误:“字典中没有给定键”

我正在使用EF6代码优先和每个层次结构的表编写一个ASP.Net应用程序 每当我尝试使用dbcontext执行任何有意义的操作(例如查询,更新等)时,我都会收到此错误: { “Message”: “An error has occurred.”, “ExceptionMessage”: “An error occurred while preparing the command definition. See the inner exception for details.”, “ExceptionType”: “System.Data.Entity.Core.EntityCommandCompilationException”, “StackTrace”: ” at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition..ctor(DbProviderFactory storeProviderFactory, DbCommandTree commandTree, DbInterceptionContext interceptionContext, IDbDependencyResolver resolver, BridgeDataReaderFactory bridgeDataReaderFactory, ColumnMapFactory columnMapFactory)\r\n at System.Data.Entity.Core.EntityClient.Internal.EntityProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest, DbCommandTree commandTree, DbInterceptionContext interceptionContext)\r\n at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.CreateCommandDefinition(ObjectContext context, DbQueryCommandTree tree)\r\n at System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlanFactory.Prepare(ObjectContext context, […]

接口inheritance和转换

我创建了一个接口,我从另一个(COM)接口inheritance: public interface IDTSComponentMetaData : IDTSComponentMetaData90 { } 就是这样。 这背后的原因是,根据我正在使用的SQL Server版本,基数可能是IDTSComponentMetaData90(2005)或IDTSComponentMetaData100(2008)。 我不想在代码中有条件地编译对IDTSComponentMetaData90 / IDTSComponentMetaData100的每个引用,而是使用版本中性接口,它将简单地包装正确的真实接口。 问题是SSIS在一个关键点将一个对象传递给本机接口,我需要将它转换为我的包装器接口: #if SQL2005 public void Initialize(IDTSComponentMetaData90 c,IServiceProvider s) { #elif SQL2008 public void Initialize(IDTSComopnentMetaData100 c,IServiceProvider s) { #endif m_ComponentMetaData = (IDTSComponentMetaData) c; m_ServiceProvider = s; } 这编译没有问题,但在运行时,我得到一个’无法将类型为’System .__ ComObject’的COM对象转换为接口类型’MyNameSpace.IDTSComponentMetaData’。 此操作失败,因为对IID为“{483E01E7-001C-35E4-Ac9f-4B0C1B81E409}”的接口的COM组件的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULTexception:0x80004002(E_NOINTERFACE)) 。 我做的完全错了吗?

在VS 2010中可视化类设计器中的genericsinheritance的类型参数

是否有可能在Visual Studio 2010中可视化通用inheritance的类型参数? 如果有一个类有属性的类 Dictionary DictionaryProperty 我可以选择显示该属性的基类。 但是,没有类型参数(KeyClass,ValueClass)的generics类Dictionary有一个inheritance。 我找不到任何方法来可视化类设计器中的类型参数! 有没有办法做到这一点?

使用更多派生类型覆盖子类inheritance的属性

我想要实现的简化示例如下所示: public class Animal { public virtual Teeth teeth {get;set;} } public class Mouse : Animal { public override SmallTeeth teeth {get; set;} // SmallTeeth Inherits from Teeth } 这显然不起作用,因为牙齿必须与要在Mouse类中重写的Animal类中的相同类型。 但是,在允许在从Animalinheritance的任何函数中使用更多派生类型的情况下,可以实现这样的事情吗? 例如,如果Animal类包含一个咬合函数: public void Bite() { teeth.bite() Console.WriteLine(“Ouch”) } 我可以调用inheritance自Animal的Bite()函数,它将使用SmallTeeth类型的Mouse类’字段。 这可能吗? 这是我做我想做的最好的方式吗? 如果没有,这个问题的正确方法是什么?

从页面基类中查找页面中的控件

希望你有一个美好的星期五和东西…好吧,所以这是我的问题: 我的所有ASPX页都inheritance自一个名为BasePage的基类。 BasePageinheritance自: System.Web.UI.Page 现在,如何从我的页面基页访问/设置我的aspx页面中的控件? 我试过这个: HyperLink hypMainMenu = (HyperLink)Page.FindControl(“hypMainMenu”); hypMainMenu.NavigateUrl = AppConfiguration.AppSettings.Urls.MainMenu; 但是hypMainMenu总是空的 – 我找不到那个混蛋。 有任何想法吗? 或者这是一种不好的做法,有人可以推荐一种更好的方法吗? 提前致谢!

c#为什么我们不能覆盖静态属性? (高级类如何使用高级数据调用基类方法)

我的问题可能没有很好地表达,它可能是一个骗局,但我在这里 class person { protected static string request = “select * from person where gender in (‘male’,’female’)”; public string sharedmethod() { return “the request is” + request; } } class man:person { override protected static string request = “select person.*,man.* from person,men where mytype in (‘male’) “; DateTime dateOfFirstCar; } class woman:person { override protected […]

VB.NET与C#中的属性实现的多级inheritance

假设我有2个接口定义如下: public interface ISkuItem { public string SKU { get; set; } } public interface ICartItem : ISkuItem { public int Quantity { get; set; } public bool IsDiscountable { get; set; } } 当我在C#中实现接口时,VS会生成以下模板化代码: public class CartItem : ICartItem { #region ICartItem Members public int Quantity { get {…} set {…} } public bool […]