Tag: 属性

用于轮询属性的最简单的C#代码?

我想知道用于轮询属性值的最简单代码,以在其getter中执行代码。 目前我正在使用: instance.property.ToString(); ,但我宁愿有一些没有可能的副作用或不必要的开销。

c#属性超过main

有人问我一个关于如何打印的问题 line no 1 line no 2 line no 3 不改变读取的主要方法 static void Main(string[] args) { Console.WriteLine(“line no 2”); } 现在一种方法是为控制台应用程序提供多个入口点。 但是我尝试了另一种方法,如下所示: class Program { [Some] static void Main(string[] args) { Console.WriteLine(“line no 2”); } } class SomeAttribute : Attribute { public SomeAttribute() { Console.WriteLine(“line no 1”); } ~SomeAttribute() { Console.WriteLine(“line no 3”); } } […]

C#readonly vs Get

readonly修饰符和get-only属性之间是否有任何区别? 例: public class GetOnly { public string MyProp { get; } } public class ReadOnly { public readonly string MyProp; } 额外奖励:有没有办法让界面与两者兼容? (与generics一起使用) public interface ISomething { public string MyProp { get; } } public class GetOnly : ISomething { public string MyProp { get; } } public class ReadOnly : ISomething // Cannot […]

如何在c#中迭代内部属性

public class TestClass { public string property1 { get; set; } public string property2 { get; set; } internal string property3 { get; set; } internal string property4 { get; set; } internal string property5 { get; set; } } 我可以使用以下循环遍历属性,但它只显示公共属性。 我需要所有的属性。 foreach (PropertyInfo property in typeof(TestClass).GetProperties()) { //do something }

使用Obsolete属性

我最近被告知,在我们的代码中使用[Obsolete]属性标记了许多方法是不好的做法。 这些方法是我们代码库的内部方法,而不是API。 这些方法处理旧的加密function。 我觉得向团队的其他成员表示不应该使用这些方法是一种快速而安全的方式,并提供了建议替代方案的信息。 其他人认为我应该完全删除这些方法,根据需要重写或重构现有代码。 此外,人们认为很容易忽视编译器警告。 当没有被第三方使用时,是否存在将代码标记为过时的“最佳实践”? 或者这主要是主观的?

仅通过构造函数设置类的属性

我试图使类的属性只能通过同一个类的构造函数设置。

防止visual studio将setter方法限制为内部

好吧,我使用visual studio 2015 CE,更新2.我通常做的一个生产力黑客是我创建空模型类,如: public class PersonModel { } 然后在选择表达式中使用它们,如: db.People.Where(p => someCondition) .Select(p => new PersonModel { Id = p.Id, Name = p.Name, //set other properties }).ToList(); 然后我转到尚未存在的属性Id和Name ,…并按Control+. 要求v​​isual studio为我generate property Id 。 一切都很好,但它会创造: public int Id { get; internal set; } 如果我在asp.net webapi模型绑定中使用相同的方法,绑定将无提示失败并给我Id = 0 。 所以我的问题是:有没有选择让VS创建公共setter,即: public int Id { get; […]

为什么.Net最佳实践将自定义属性设计为密封?

我正在阅读Pro C#2010和 Andrew Troelsen 的.Net 4平台 。 在第15章关于属性存在一个注释: 注意:出于安全原因,将所有自定义属性设计为密封被视为.Net最佳实践。 作者没有解释原因,有人可以解释原因吗?

为什么C#编译器不允许接口中的私有属性设置器?

在某些情况下,比如MVVM视图模型,我有时需要私有setter,因为视图模型公开了一个只能在内部修改的状态。 那么在接口上需要私有的setter是错误的吗? (我的意思并不是特别在所描述的场景中)如果没有,为什么C#编译器不允许它? 谢谢。

属性已由’FrameworkElement’注册

我正在编写两个依赖项属性,并且我在VS11的设计窗口中不断收到“[Property]已经由’FrameworkElement’注册”错误。 这是我的代码片段 public static readonly DependencyProperty IsEditingNumberProperty = DependencyProperty.Register(“IsEditingNumbers”, typeof(bool), typeof(FrameworkElement), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender)); 问题似乎是第3个参数(所有者参数typeof(FrameworkElement))。 如果我将第3个参数设置为包含两个依赖项属性的类,则错误消失,但我不能直接使用xaml中的属性。 在使用之前,我必须为每个依赖属性添加所有权。 实际上,它确实正确渲染,但只有当我第一次打开它时。 第一次渲染后,它会立即给我一个例外。 在运行时,它似乎完美地工作。 我做错了什么,有没有办法摆脱这个恼人的错误? —-编辑—– 这是我的自定义类(包括2个依赖属性): public partial class EditableTextBox : UserControl { #region Dependency Properties public static readonly DependencyProperty IsEditingNumberProperty = DependencyProperty.Register(“IsEditingNumber”, typeof(bool), typeof(FrameworkElement), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender)); public static readonly DependencyProperty TextProperty = DependencyProperty.Register(“Text”, typeof(string), typeof(FrameworkElement), new […]