Tag: 属性

如何在UML中表示C#属性?

不是一个属性,不是一个方法。 定型? <> <> ? 我正在对现有系统进行逆向建模,所以我需要清楚地反映出这与readonly字段或方法对不同(不管IL说的是什么),所以我想我会选择刻板印象,但我会接受语言独立的get_set_作为一般解决方案。 谢谢大家的理智测试。

C#是否具有“ThreadLocal”模拟(对于数据成员)到“ThreadStatic”属性?

我发现“ThreadStatic”属性最近非常有用,但现在我想要一个“ThreadLocal”类型属性,它允许我在每个线程的基础上拥有非静态数据成员。 现在我知道这会产生一些非平凡的影响,但是: C#/ .net中是否已经内置了这样的东西? 或者因为到目前为止它的答案是否定的(对于.net <4.0),是否有一个常用的实现? 我可以想出一个合理的方法来实现它,但只会使用已经存在的东西,如果可用的话。 如果它还不存在,那么它将实现我正在寻找的东西: class Foo { [ThreadStatic] static Dictionary threadLocalValues = new Dictionary(); int defaultValue = 0; int ThreadLocalMember { get { int value = defaultValue; if( ! threadLocalValues.TryGetValue(this, out value) ) { threadLocalValues[this] = value; } return value; } set { threadLocalValues[this] = value; } } } 请原谅任何C#无知。 我是一名C […]

为什么我应该在属性访问器中使用私有变量?

对不起如果我是菜鸟,我有这个疑问,为什么我们使用私有变量并使用属性设置它们? 为什么我们不能单独使用本地人? 我在谈论这样的情况 private string _testVariable; public string MyProperty { get { return _testVariable;} set {_testVariable = value;} } 我在考虑简单地使用 public string MyProperty { get; set; } 为什么冗余私有变量? 这两种策略有什么不同? 任何人都可以请注意这一点。 谢谢

从Lambda Property Expression获取自定义属性

我正在使用ASP.NET MVC 2 Preview 2并编写了一个自定义的HtmlHelper扩展方法来使用表达式创建标签。 TModel来自具有属性的简单类,属性可以具有定义validation要求的属性。 我试图找出表达式在我的label方法中表示的属性上是否存在某个属性。 类和标签的代码是: public class MyViewModel { [Required] public string MyProperty { get; set; } } public static MvcHtmlString Label(this HtmlHelper htmlHelper, Expression<Func> expression, string label) { return MvcHtmlString.Create(string.Concat(“”, label, “”)); } public static string GetInputName(this Expression<Func> expression) { return expression.Body.ToString().Substring(expression.Parameters[0].Name.Length + 1); } 然后我会像这样称呼标签: Html.Label(x => x.MyProperty, “My Label”) […]

C#中的通用属性

可能重复: 制作通用财产 我不太确定该怎么做,但我想做的是创建一个特殊类型的属性,它将在get和set执行特定任务,并将在generics类型上定义。 例如,写这篇文章的时候: MyProp name; 将对字符串值执行预定义的get和set 。 怎么办? 谢谢!

当属性名称不同时使用Automapper

我们正在使用Codeplex的AutoMapper,对我来说,目标对象的所有属性都以’Field’结尾,即cityField,源对象只有city。 我可以使用下面的代码来实现,但所有的属性都只是’Field’的后缀,有20个属性。 .ForMember(dest => dest.cityField, opt => opt.MapFrom(origin => origin.City)); 是否有任何其他方法可以在映射时忽略“字段”字,以便它可以在不使用.ForMember()的情况下映射20次?

如何使用reflection获取C#静态类属性的名称?

我想创建一个C#Dictionary,其中key是类中静态属性的字符串名称,value是属性的值。 给定名为MyResources.TOKEN_ONE的类中的静态属性,如何获取属性的名称而不是其值? 我只关心属性名称的末尾部分(例如“TOKEN_ONE”)。 我编辑过这个,提到我不想映射字典中的所有属性值,只是该类中所有内容的一小部分。 所以假设我想获得单个属性的名称。 给定MyResources.TOKEN_ONE,我想回到“MyResources.TOKEN_ONE”或只是“TOKEN_ONE”。 这是一些示例代码,显示了我正在尝试做的事情。 我需要属性名称,因为我正在尝试生成一个javascript变量,其中我将属性名称映射到变量名称,将属性值映射到变量值。 例如,我希望C#Dictionary生成如下所示的行: var TOKEN_ONE =“一个”; using System; using System.Collections.Generic; namespace MyConsoleApp { class Program { static void Main(string[] args) { Dictionary kvp = new Dictionary(); // How can I use the name of static property in a class as the key for the dictionary? // For example, I’d […]

是否可以命名索引器属性?

假设我在类中有一个数组或任何其他集合,以及一个返回它的属性,如下所示: public class Foo { public IList Bars{get;set;} } 现在,我可以这样写: public Bar Bar[int index] { get { //usual null and length check on Bars omitted for calarity return Bars[index]; } }

为什么我需要通过公共财产公开的私人领域?

我主要来自Java世界。 所以,C#属性看起来不错。 我知道使用C#3.0或更高版本我可以使用自动属性。 我更喜欢它:)。 我的问题是关于一个(可能更旧的)代码,我可以看到这个: private int age; public int Age { get { return age; } set { age = value; } } 为什么我需要私人领域时代? 我真的藏在这里的是什么? 编辑: 我完全理解吸气剂和固定剂的必要性。 我提到我是从Java世界来的,并且一直这样做。 我知道C#3.0或以上的自动属性是合成糖。 但也许我的问题有一个更简单的答案。 这是否意味着(吼叫C#3.0)该财产没有任何价值。 那么它必须从其他领域获得价值吗?

以编程方式检查MSI的ProductVersion

昨天我一直在搜索高低,寻找如何快速获得msi数据库的ProductVersion。 大多数情况下,我发现使用WindowsInstaller COM包装器,虽然这完成了工作,我想通过pinvoke使用msi.dll实现相同的结果。