Tag: 属性

在C#中重载属性

好吧,我知道C#不支持属性重载 – 大多数参考文献通过引用单方法 – 不同 – 返回类型问题来解释它。 然而,怎么样的二传手呢? 我想直接将值指定为字符串或对象,但只返回字符串。 像这样: public string FieldIdList { get { return fieldIdList.ToString(); } set { fieldIdList = new FieldIdList(value); } } public FieldIdList FieldIdList { set { fieldIdList = value; } } private FieldIdList fieldIdList; 为什么不允许这样做? 我还看到“属性”只是在编译时创建getter / setter函数。 是否可以创建自己的? 就像是: public void set_FieldIdList(FieldIdList value) { fieldIdList = value; […]

如何在模型和ViewModel中“干掉”C#属性?

这个问题的灵感来自我与ASP.NET MVC的斗争,但我认为它也适用于其他情况。 假设我有一个ORM生成的模型和两个ViewModel(一个用于“详细信息”视图,一个用于“编辑”视图): 模型 public class FooModel // ORM generated { public int Id { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public string EmailAddress { get; set; } public int Age { get; set; } public int CategoryId { get; set; } } 显示ViewModel […]

C#多个索引器

是否有可能具有以下内容: class C { public Foo Foos[int i] { … } public Bar Bars[int i] { … } } 如果没有,那么我可以通过哪些方式实现这一目标? 我知道我可以创建名为getFoo(int i)和getBar(int i)的函数,但我希望用属性来做这个。

如何使引用类型属性“readonly”

我有一个类Bar ,其中包含一个包含引用类型Foo的私有字段。 我想在公共财产中暴露Foo ,但我不希望财产的消费者能够改变Foo ……但是它应该由Bar内部改变,即我不能使该字段readonly 。 所以我想要的是: private _Foo; public Foo { get { return readonly _Foo; } } ……当然无效。 我可以返回一个Foo的克隆(假设它是IClonable ),但这对消费者来说并不明显。 我应该将属性的名称更改为FooCopy吗? 它应该是GetCopyOfFoo方法吗? 你认为最佳做法是什么? 谢谢!

为什么我的属性声明“”中需要“field:”?

我无法在任何地方找到“字段”列为C#关键字。 有谁知道这个背景?

如何在c#中本地化属性描述?

我正在开设一个将被其他国家的一些人使用的课程。 我必须将每条消息本地化,警告ec以便他们能够理解我们的意思。 在许多情况下,我实现了我的目标。 但是像描述这些属性属性在屁股上是如此痛苦。 这就是我现在所拥有的: [Category(“Editable Values”), Description(“Sets the minimum select…”)] public Ampere Simin { get {…} set {…} } 和 [Category(“Editable Values”), Description(Localisation.Simin)] // “Localisation” here is the internal resource file that i wrote for messages, warnings, exceptions and -unfortunately- descriptions public Ampere Simin { get {…} set {…} } 这就是我想要做的。 但是不可能以这种方式使用Localisations。 有关我可以使用的东西的任何建议而不是它吗?

从HTML帮助程序中提取显示名称和描述属性

我正在构建一个自定义HTML.LabelFor帮助器,如下所示: public static MvcHtmlString LabelFor(this HtmlHelper self, Expression<Func> expression, Boolean showToolTip) { var metadata = ModelMetadata.FromLambdaExpression(expression, self.ViewData); … } 为了能够获得属性的正确名称,我使用以下代码: metadata.DisplayName 在ModelView类的属性上,我得到了: [DisplayName(“Titel”)] 问题是我还需要一个描述。 有一个名为Display的属性,它有名称和描述,但我没有看到如何使用上面代码中的元数据变量提取它?

Visual Studio – 调试与发布

我在VS 2008中构建了一个针对.NET 2.0的Windows服务。我将其作为控制台应用程序运行以进行调试。 控制台应用程序运行良好。 我把它放在我的本地计算机上作为服务,在调试模式下编译,仍然工作得很好。 我现在准备发布了,突然,当我将其设置为发布模式时,服务编译并安装,但没有任何反应。 (根本没有运行中的代码)。 我意识到发布与调试模式是属性配置设置,但似乎在发布模式下,即使我检查定义DEBUG常量,取消选中Optimize代码,并将Debug info设置为’full’,它仍然无效。 将它重新设置为调试,它再次像魅力一样工作。 (作为旁注,我尝试将目标框架重置为3.5,以确保不是问题) 所以我的问题(按重要性排序)是这些: 将以任何方式使用我的“调试”版本会导致任何问题吗? 除了我已经尝试改变的三个设置之外,调试和发布之间的设置有何不同? 这对我来说似乎是一个奇怪的错误,并激起了我的好奇心。 知道是什么会导致这个吗? 编辑:应该提一下,我已经在使用自定义安装程序。 基本上我编译程序(在调试或发布中),然后使用相应的安装程序安装它。

C#反思:更新房产价值的最快方法?

这是使用reflection更新属性的最快方法吗? 假设该属性始终为int: PropertyInfo counterPropertyInfo = GetProperty(); int value = (int)counterPropertyInfo.GetValue(this, null); counterPropertyInfo.SetValue(this, value + 1, null);

传递属性本身作为C#中的参数

我正在寻找一种方法将属性本身传递给一个函数。 不是财产的价值。 函数事先不知道哪个属性将用于排序。 此示例中最简单的方法是:使用不同的参数类型创建4个覆盖。 其他方法是使用typeof()内部函数。 当Class1具有数百个属性时,这两种方式都是不可接受的。 到目前为止我找到了以下方法: class Class1 { string vehName; int maxSpeed; int fuelCapacity; bool isFlying; } class Processor { List vehicles = null; Processor(List input) { vehicles = input; } List sortBy(List toSort, string propName) { if (toSort != null && toSort.Count > 0) { return toSort.OrderBy(x => typeof(Class1).GetProperty(propName).GetValue(x, null)).ToList(); } else […]