Tag: subclass

我可以从Dapper查询返回多个派生类型的集合

我有一个类似于这样的类结构: public abstract class Device { public int DeviceId { get; set; } //Additional Properties } public class DeviceA : Device { //Specific Behaviour } public class DeviceB : Device { //Specific Behaviour } 我需要检索设备列表,或者单个设备,它被实例化为适当的派生类型(基于数据库中设备记录中的类型值)。 也就是说, Device对象的集合应该包含许多具有不同类型的对象,所有这些对象都是从Device派生的。 我已经通过以下方式实现了这一点,但有些事情对此感觉不对。 public static IEnumerable AllDevices() { using (var connection = CreateConnection()) { connection.Open(); return connection.Query(“SELECT * FROM Device”).Select(d […]

在.NET中,您可以使用reflection来获取类的所有非inheritance方法吗?

由于这里的问题,我正在尝试编写一个自定义JsonConverter来处理您对列表或集合进行子类化的情况,然后为其添加额外的属性。 因此,一种方法是忽略所有基类属性,并仅序列化已定义类中的属性。 (从技术上讲,这是行不通的,因为如果你inheritance了那个子类,你就会破坏序列化,但它确实让我想知道……) 是否有可能通过reflection(我知道答案是’是’,因为Reflector确实如此,但我不知道如何)只获得在类本身定义的成员而不是inheritance的成员? 例如… 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; } } 在这种情况下,我想反思MySubClass并且只忽略BaseProp1和BaseProp2而得到SubProp1和SubProp2 。 那怎么可能呢? 中号

C#如何在C ++中使公共/私有一切?

我最近开始学习C#,但我有一些C ++的背景知识。 我想知道我会怎样做 class employee { public: …. … methods … …. private: …. … private member variables …. …. } 我尝试在C#中这样做,但它不喜欢“public:…”和“private:…”来制作公共或私人之后的所有内容。 另外,我已经看到了这个在C#中获取和设置的东西,所以你不需要做一个私有成员变量的方式,然后使函数返回该变量? 虽然我在这,但是如何在C#中创建子类? 在C#中,新类在不同的选项卡中打开,所以我很困惑如何做到这一点。

ObservableCollection:使用多个新项调用OnCollectionChanged

请注意,我正在尝试使用NotifyCollectionChangedAction.Add操作而不是.Reset。 后者确实有效,但对于大型集合来说效率不高。 所以我inheritance了ObservableCollection: 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( NotifyCollectionChangedAction.Add, (IList)_cachedItems)); } } 抛出一个集合添加事件是指不属于集合的项目 这似乎是BCL的一个错误? 我可以在调用OnCollectionChanged之前逐步查看将新项添加到this.Items 哇 刚刚发现了一个惊人的发现。 这些方法都不适合我(flush,addrange),因为只有当这个集合绑定到我的Listview时才会触发错误! TestObservableCollection testCollection = new TestObservableCollection(); List testTrades = new List(); for (int i = 0; […]