Tag: 密封

更改密封类的“ToString”

我有一个我正在上课的课程: public sealed class WorkItemType 它的ToString很弱(只显示Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemType )。 有没有办法覆盖它来显示WorkItemType的名称? 通常我只会在新类中聚合该值,但我在WPF中使用它来进行绑定(我希望在combobox中有一个WorkItemTypes列表,并将所选值分配给绑定的WorkItemType变量。) 我想我在这里运气不好,但我想我会问。

如何使用无参数构造函数XML序列化密封类?

我目前正在使用XMLSerializer来序列化我自己的类的列表。 类的一个属性是一个没有无参数构造函数的密封类的实例,因此XML Serializer拒绝序列化该类。 我怎么能绕过这个? 我需要将该属性序列化。 有什么方法可以指定该类应该如何序列化? 我们想继续使用XML; 是否有另一个我可以使用的XML序列化器没有这个问题? 我再次道歉,如果这是一个骗局,但我不知道该搜索什么。 [编辑]为了澄清,我无法访问密封类的来源。

课程是否仍应作为推荐密封?

我知道这在“技术上”是这个问题的重复。 我应该推荐默认的密封类吗? 但是我再问一遍,因为显然这个建议已经改变了1次,虽然我在过去几年里找不到任何关于它的事情,或者现在越来越多的人推荐AGAINST密封课程,这要归功于改进在测试中(这是主要原因之一),处理器速度(速度差现在可以忽略不计)等。 我正在试图找出最新的天气指南是什么,以便将classes标记为sealed 。 1 Essential C#6.0(第5版) ,Mark Michaelis(合着者Eric Lippert): “一般来说,将一个类别标记为密封很少进行,并且应该只保留那些有充分理由支持这种限制的情况。实际上,离开类型未开封的情况越来越令人满意,因为unit testing因此而变得突出需要支持mock(测试双重)对象创建来代替实际的实现。“ 这是硬拷贝certificate,因为其他人都是口口相传。

第三方类的TypeConverter属性

在创建类时,可以使用TypeDescriptor.GetConverter(typeof(T))将TypeConverter属性应用于它,返回自定义类型转换器。 例如: [TypeConverter(typeof(FooConverter))] public class Foo {…} public class FooConverter: TypeConverter {…} var tc = TypeDescriptor.GetConverter(typeof(T)); //returns a FooConverter instance. 只要课程是我们制作的,这就有效。 但是如何为一个我们无法修改源代码的类提供自定义TypeConverter呢? 例如,如何为System.Version类(没有一个)提供自定义TypeConverter?

是否有inheritance密封类的替代方法?

我问这个的原因是因为我想创建一个具有FileInfo类的所有function的类(从FileInfo派生),并允许我添加自己的属性。 我认为一个例子会更多地合作。 我想要的是: BindingList files = new BindingList(); public void GatherFileInfo(string path) { files.Add(new FileInformation(path)); listboxFiles.DataContext = files; } class FileInformation : FileInfo { public bool selected = false; } 与我害怕我必须做的事情: BindingList files = new BindingList(); public void GatherFileInfo(string path) { files.Add(new FileInformation(path)); listboxFiles.DataContext = files; } class FileInformation : FileInfo { string path = […]

抽象类的密封属性

请考虑以下设计: public interface IBook { string Author { get; set; } string Title { get; set; } } abstract class BaseBook : IBook { private string _title; public virtual string Author { get { Console.WriteLine(“Base book GET!”); return _title; } set { Console.WriteLine(“Base book SET!”); _title = value; } } public string Title { get; […]

访问级别和修饰符(私有,密封等)是否在C#中起到安全作用?

我已经看到你可以使用reflection来操纵私人和内部成员 。 我也看到它说’密封’类更安全,而不是 。 修饰语“公开,受保护,内部,私有,抽象,密封,只读”只不过是绅士关于设计和API使用的协议,只要您能够获得反思,就可以打破它们吗? 如果一个黑客已经在运行调用你的API的代码,游戏就已经丢失了,对吧? 以下是否比任何其他类更安全? //private class sealed class User { private string _secret = “shazam”; public readonly decimal YourSalary; public string YourOffice{get;}; private DoPrivilegedAction() { } }

与重写相关联的密封关键字

是否总是需要在下面代码的方法的签名中使用override关注关键字: public sealed override string Method1(){…..} 我的意思是,如果我想在没有覆盖的情况下“密封”基类中的方法,是否仍然需要override关键字?

实现后密封接口

我正在做一个小项目,我遇到了这个问题。 项目输出是包含接口的库。 我希望实现该接口并尽可能密封其中的函数: public interface ITest { void SomeMethod(); } class A : ITest { public sealed override SomeMethod() { } } 我们的想法是让每个人都可以使用该界面,并拥有一些实现它的专门类。 例外情况是,我想确保如果某人创建了类型A的专用类,他/她将无法更改方法的行为。 问题是您不能在其中放置“override”关键字,因为该方法未在界面中声明为“虚拟”。 并且您不能在接口中将其声明为“虚拟”,因为它是不允许的。 并且您无法删除“override”关键字,因为“密封”需要它。 任何变通方法或头脑风暴的想法都会受到欢迎,但如果有人能想出一个包含界面的解决方案,我真的很乐意学习它! 谢谢! 编辑:忘了这个问题! 就像Ani说的那样,我忘了默认C#中的方法是密封的。 似乎偶尔回到基础知识总是好的…