子类实例化 | Stackoverflowexception
我有很多代码,但是问题本身对我来说很清楚,所以我发布了一个示例: public class ExcelTable { public ExcelTable() // CONSTRUCTOR { // create new excel-application and so on.. } public ExcelOutput Output = new ExcelOutput(); // Stackoverflowexception private xlWorkbook; // I need these to inherit into ExcelOutput private xlWorksheet; // '' '' // ... // '' '' public class ExcelOutput : ExcelTable { public
6 2024-04-26
编程技术问答社区
C#用泛型进行子类化。我需要一个额外的泛型参数给ctor,但怎么做?
我有一个类 public class LDBList : List where T : LDBRootClass { // typical constructor public LDBList(LDBList x) : base(x) { } ... } ,但我想拥有一个额外的构造函数,该构造函数列出了不同的通用类型(例如A),以及将A转换为t的函数,然后从中构建t列表,类似于 public LDBList( Func converter, IList aList) { foreach (var x in aList) { this.Append(converter(x)); } } so converter是类型A->T,所以我列出A列表,然后从中列出T列表.我的课程是由T参数化的,所以很好. ,但它抱怨"找不到类型或名称空间名称'a'
6 2024-04-26
编程技术问答社区
给定一个基类,我怎样才能找到它的最专业的子类?
我可以找到所有类似于 的基本子类的类 var subclasses = Assembly .GetAssembly(typeof(BaseClass)) .GetTypes() .Where(t => t.IsSubclassOf(typeof(BaseClass))) 现在,如何仅选择最专业的子类?也就是说,叶子是没有自己的子类的叶子节点. 解决方案 subclasses.Where(c => !subclasses.Any(c2 => c == c2.BaseType)) 这将更快,您是您制作的木制标签. 这仅起作用,因为BaseClass在同一组件中;否则,它将不一致地捕获从不同组件中的中间类继承的中级类. 更通用的解决方案是对其他每个子类检查IsAssignableFrom.
4 2024-04-25
编程技术问答社区
如何用MonoTouch.dialog创建一个自定义风格的EntryElement?
我正在尝试使用monotouch.dialog创建自定义的输入元素.我了解如何为弹性插曲以样式的字符串元素样式 - 请参见下面的示例: public class CustomStyledStringElementPlain : MonoTouch.Dialog.StyledStringElement { public CustomStyledStringElementPlain (string _caption, UIColor _backgroundcolour, UITextAlignment _alignment) : base(string.Empty,string.Empty) { TextColor = UIColor.White; Font = UIFont.FromName ("Helvetica-Bold", 14f); Caption = _caption; Alignment =
14 2024-04-24
编程技术问答社区
用c#和RichEditBox使用EM_STREAMOUT的例子
我试图从WM_GetText的Richedit字段中获取文本,但是我遇到了一些问题,因此我发现EM_Streamout,这尤其适用于Richedit.我找到了这个代码并玩了 有一点,但我无法让他们工作: delegate uint EditStreamCallback(IntPtr dwCookie, IntPtr pbBuff, int cb, out int pcb); struct EDITSTREAM { public IntPtr dwCookie; public uint dwError; public EditStreamCallback pfnCallback; } [DllImport("user32.dll", CharSet=CharSet.Auto)] static extern IntPtr SendMessage(HandleRef hwnd, uint msg, uint wParam, ref EDITSTREAM lParam); 也许有人
16 2024-04-24
编程技术问答社区
C#视觉上子类化datagridview控件VS2005
也许这很愚蠢,但是我在VS2005 C#中的DataGridView控件子类有问题.我知道我几乎可以通过做 来亚班级 public class MyDataGridView : DataGridView {} 没问题,我把想要全球适用的某些内容/元素提出了.现在,我使用此GridView并将其放入自定义用户控件中,该控制也将包含其他控件.因此,我有视觉设计师创建的东西.我在其中抓住了一些按钮,标签和我派生的" mydatagridview". public partial class MyCompoundDGVPlus : UserControl 所以,现在,我可以在视觉上绘制,移动,根据需要更改各种设置,没问题. 现在,我希望这个" mycompounddgvplus"类作为其他类别的基础,我将操纵设置特定,但希望所有人都具有相同的外观/感觉,而其他相似的流程,因此派生. 我什至已经将"修饰符"设置设置为公共,因此我应该能够在任何派生级别上修改控件的任何属性.
10 2024-04-22
编程技术问答社区
继承PhoneApplicationPage'的子类中的代码后台类
默认情况下,所有代码范围类都从PhoneApplicationPage继承.我想制作一个PhoneApplicationPage的子类,并将其用作我的代码范围类的基础,例如: namespace Test { public partial class HistoryRemoverPage : PhoneApplicationPage { protected override void OnNavigatedTo (NavigationEventArgs e) { if (e.NavigationMode == NavigationMode.New) NavigationService.RemoveBackEntry(); } } } namespace Test { public partial class MainPag
10 2024-04-22
编程技术问答社区
C#重写/添加方法/字段到对象中
我有一个为我创建和设置对象的库,然后我可以使用这些对象来做事. 假设我给我的对象" a" a a" a" 所以我想覆盖一种方法,以特定于对象,我不想更改其类的代码,因为这需要更改库. 在Ruby中,我可以使用Singleton类,例如: class FirstClass def test p "test" end end o = FirstClass.new class
8 2024-04-22
编程技术问答社区
从静态基类方法中调用子类构造函数
确定...在目标C中,您可以使用" new this()"从基类中的静态方法中新一个子类新的子类,因为在静态方法中,这是指类,而不是实例.当我第一次找到它并且我经常使用它时,那真是一个非常酷的发现. 但是,在C#中不起作用.该死! 所以...有人知道我如何从静态基类方法中"新"一个子类? 这样的东西... public class MyBaseClass{ string name; public static Object GimmeOne(string name){ // What would I replace 'this' with in C#? return new this(name); } public MyBaseClass(string name){ this.name = name; } } // No need to write redundant
8 2024-04-21
编程技术问答社区
当一个子类已经派生自不同的基类时,子类如何共享行为?
我有两个类别实现的类.现在,我希望他们共享功能.通常,我会用抽象类替换异点行为,例如某个行为.问题在于,其中一个子类已从另一个类中得出,而其他类不是我们拥有的软件. (这是c#,因此多个继承不是选项.)从第三方类衍生的子类没有实现.它只是源自第三方类,并实现异人行为,因此第三方类可以与实施异型行为的其他子类相同的方式对待. 目前,我所做的是在ismeomeMeomeBehavior上实现扩展方法.现在,消耗代码 can 调用该方法.这种方法的问题在于,我想强制使用此扩展方法.我无法从接口中删除somemethod(),因为扩展方法必须最终调用. 当其中一个已经来自另一个第三方,班级时,如何让两个班级优雅地共享相同的行为的任何想法?注意:策略设计模式在这里听起来很有意义,但是当行为变化时,使用该模式.这里的行为不会有所不同.它只需要共享. 解决方案 是否有任何理由您不能使用构图而不是委派来实现当前从第三方类派生的类?只需将所有接口方法委托给第三方类的实例即可.这样,如果
10 2024-04-20
编程技术问答社区
C# 带有子类参数的重写方法
我正在尝试实现这样的目标 public abstract class BaseEvent { public abstract void Dispatch(IEventHandler handler); } public class MyEvent : BaseEvent { public override void Dispatch(IMyEventHandler handler) { handler.OnMyEvent(this); } } public interface IEventHandler { } public interface IMyEventHandler : IEventHandler { void OnMyEvent(MyEvent e); } 问题是编译器抱怨说MyEvent没有实现BaseEvent,因为Dispatch是IMyEventHandler而不是IEventHandler.我不
14 2024-04-19
编程技术问答社区
我能否从Dapper查询中返回多个派生类型的集合?
我的类结构与以下类似: public abstract class Device { public int DeviceId { get; set; } //Additional Properties } public class DeviceA : Device { //Specific Behaviour } public class DeviceB : Device { //Specific Behaviour } 我需要检索设备列表,或将单个设备实例化为适当的派生类型(基于DB中设备记录中的类型值).也就是说,Device对象的集合应包含许多具有不同类型的对象,所有对象均来自Device. . 我已经实现了以下方式,但是对此感觉并不正确. public static IEnumerable AllDevices() { using (var connection = CreateConnection(
6 2024-04-18
编程技术问答社区
在 .NET 中,能否使用反射来获取类的所有非继承方法?
因为有这个问题 处理列表或集合子类别的情况,然后在其中添加额外的属性.因此,一种方法是忽略所有基类属性,而仅序列化的类别中的类别. (从技术上讲,这是行不通的,因为如果您子类的子类,您打破了序列化,但这确实使我感到奇怪...) 是否可以通过反射(我知道答案是"是",因为反射器确实可以做到这一点,但是我不知道)只能获得班级本身定义的成员而不是与那些定义的成员遗传?例如... public class MyBaseClass { public string BaseProp1 { get; set; } public string BaseProp2 { get; set; } } public class MySubClass : MyBaseClass { public string SubProp1 { get; set; } public string SubProp2 { get; set; } } 在这种情况下,我想反思MySub
8 2024-04-17
编程技术问答社区
如何将一个对象 "克隆 "为一个子类对象?
我有一个类A和一个B的类B,它继承了类A并使用更多字段扩展. 具有类型A的对象a,如何创建一个包含所有数据包含的数据的type B对象b? 我尝试过a.MemberwiseClone(),但这仅给了我另一种类型A对象.而且我不能将A施放到B中,因为继承关系只允许相反的铸件. 正确的方法是什么? 解决方案 没有手段自动内置在语言中... 一个选项是将构造函数添加到B类中,将A类作为参数. 然后您可以做: B newB = new B(myA); 在这种情况下,构造函数可以根据需要将相关数据复制. 其他解决方案 我会将复制构造函数添加到A中,然后在B中添加一个新的构造函数,该构造函数将A的实例添加到BASE的复制构造函数. . 其他解决方案 您可以使用反射来实现这一目标. 优势:可维护性.无需更改复制构建器或类似,添加或删除属性. 缺点:性能.反射很慢.我们仍在谈论平均大小的班级. 这是使用扩展方法的基于反射
6 2024-04-17
编程技术问答社区
如何防止重写的WinForm控件中的 "默认 "值?
我正在尝试学习和掌握c#的工作以及如何做事.从历史上看,我是Visual FoxPro(VFP)开发人员,在视觉继承几年中,我通过创建自己的用户控件基线来宠坏了应用程序. 在尝试学习C#的相似之处时,我被困在某件事上.假设我得出了自己的标签控件(控件是标签的子类),用字体" Arial"(10点)定义.然后,在我将其添加到的任何表单上,设计人员将自动预填充某些属性值,这些属性值可以在表单类的" Designer.cs"部分中看到. this.LabelHdr2.AutoSize = true; this.LabelHdr2.Font = new System.Drawing.Font("Arial", 14F, System.Drawing.FontStyle.Bold); this.LabelHdr2.ForeColor = System.Drawing.Color.Blue; this.LabelHdr2.Location = new System.Drawing.Poi
12 2024-04-16
编程技术问答社区
如何将同一基类的子类放入一个列表中?
如何将同一基座的子类放入列表中? 我正在使用ASP.NET MVC3,并创建了一个基本模型级,具有诸如名称,年龄等属性.现在,我创建了具有更多详细信息的子模型(子类). 为了轻松处理子类,我想要一个带有对象的列表,但是如何? 我已经阅读了有关接口或偶像等等的信息,但不知道正确的选择和如何开始: - ( 解决方案 只需创建列表即可,它是基类: List myList = new List(); 然后按正常添加您的子类对象: myList.Add(new SubClass1()); myList.Add(new SubClass2()); 等.其中: public class SubClass1 : BaseClass {} public class SubClass2 : BaseClass {} 然后,当您将它们取出时,您可以使用is和as操作员确定实际是哪种类型并适当地处理它们. 其他解
12 2024-04-16
编程技术问答社区
从C级通过B级到A级的传递事件
我有A类,它实现了B类的大量实例. B类封装了类c. 的实例 C类提出需要由A类处理的事件. A类不需要了解C类. C类正在通过基于绩效的统计数据,然后A当时需要合并. 如何在B类中创建事件并将它们连接起来,以便A类可以订阅B类的事件并从C类? 接收事件. 解决方案 事件无非是包装委托字段的一对方法.您可以覆盖ClassB中添加和删除方法的默认实现,以将值直接传递到ClassC中的事件: 中 public class ClassB { private ClassC m_C = new ClassC(); public event EventHandler MyEvent { add { m_C.MyEvent += value; } remove { m_C.MyEvent -= value; } } }
8 2024-04-14
编程技术问答社区
可观察到的集合:用多个新项目调用OnCollectionChanged
请注意,我正在尝试使用NotifyCollectionChangedAction.ADD操作而不是.reset.后者确实有效,但是大型收藏量不是很有效. 所以我对观测值进行了分类: public class SuspendableObservableCollection : ObservableCollection 由于某种原因,此代码: private List _cachedItems; ... public void FlushCache() { if (_cachedItems.Count > 0) { foreach (var item in _cachedItems) Items.Add(item); OnCollectionChanged(new NotifyCollectionChangedEventArgs( Notify
14 2024-04-12
编程技术问答社区
在C#4.0中,是否可以从一个通用类型参数中派生出一个类?
我一直在尝试这个,但我似乎无法弄清楚.我想这样做... public abstract class SingletonType : TBaseClass where TSingleton : TBaseClass, new() where TBaseClass : class { static TSingleton _singleton; public static TSingleton Singleton => _singleton ?? (_singleton = new TSingleton()); } 计划是像这样使用它,它可以在基类周围"包裹"单例图案... public class SingletonFoo : SingletonType { } 但是,我不断得到这个 不能从" tbaseclass"派生,因为它是类型
14 2024-04-11
编程技术问答社区
我如何检查一个类型是否是一个对象的子类型或类型?
要检查类型是否是C#中另一种类型的子类,这很容易: typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true 但是,这将失败: typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false 有什么方法可以检查类型是子类还是基类本身,而无需使用OR操作员或使用扩展方法? 解决方案 显然,否. 这是选项: 使用 type.issubclassof li> 使用 type.isassignable from li> is和as type.issubclassof 正如您已经发现的那样,如果这两种类型相同,则这将是行不通的,这里有示例 linqpad 演示: void Main() { typeof(Derived).IsSubclassOf(typeof(Base)).Dump(
16 2024-04-10
编程技术问答社区