Tag: 属性

你能在C#中获得一个类的合并属性吗?

假设我有以下一组类,是否可以合并DerivedClass的属性? 目前,如果我使用GetType()。GetCustomAttributes()方法传入trueinheritance,它将获取inheritance结构中的最高属性。 即[另一个(“鲍勃”)]和[我的(16)] 是否可以合并属性? 所以我最终会得到[My(16,“Male”)]和[Another(“Bob”)]的两个属性 我并不是说我会指定[My(16,“Male”)]的属性,而是返回一个年龄为16,性别为男性的属性。 public class MyAttribute : Attribute { public MyAttribute(int age) { Age = age; } public MyAttribute(int age, string gender) { Age = age; Gender = gender; } public int Age { get; set; } public string Gender { get; set; } } public class AnotherAttribute : Attribute { public […]

是否有可能获得const的getter?

只是好奇,有没有办法让恒定变量的吸气剂? 我有一种内部版本号,以确保两个版本的库仍然使用相同的语言,但我希望程序员能够检查他们使用的是什么版本。 现在我使用: private const Int16 protocol_version = 1; public Int16 ProtocolVersion { get { return protocol_version; } } 但如果有办法,我宁愿只用const来做。

C#Buddy课程/元数据和反思

我试图使用reflection来检查给定类上的属性是否设置了ReadOnly属性。 我正在使用的类是MVC视图模型(使用元数据的部分“伙伴”类。 public partial class AccountViewModel { public virtual Int32 ID { get; set; } public virtual decimal Balance { get; set; } } [MetadataType(typeof(AccountViewModelMetaData))] public partial class AccountViewModel { class AccountViewModelMetaData { [DisplayName(“ID”)] public virtual Int32 ID { get; set; } [DisplayName(“Balance”)] [DataType(DataType.Currency)] [ReadOnly(true)] public virtual decimal Balance { get; set; } } } […]

通过使用不同属性类型的reflection设置对象的属性

我使用reflection来填充对象的属性。 这些属性有不同的类型:String,Nullable(double)和Nullable(long)(不知道如何在这里转义尖括号……)。 这些属性的值来自(字符串,对象)对的字典。 因此,例如我的类具有以下属性: string Description { get; set; } Nullable Id { get; set; } Nullable MaxPower { get; set; } (实际上有大约十几个属性),字典将有,,等条目 现在我使用类似以下内容来设置值: foreach (PropertyInfo info in this.GetType().GetProperties()) { if (info.CanRead) { object thisPropertyValue = dictionary[info.Name]; if (thisPropertyValue != null && info.CanWrite) { Type propertyType = info.PropertyType; if (propertyType == typeof(String)) { info.SetValue(this, Convert.ToString(thisPropertyValue), […]

在C#中将字符串计算为属性

我有一个存储在字符串中的属性…说Object Foo有一个属性Bar ,所以要获取我将调用的Bar属性的值。 Console.Write(foo.Bar); 现在说我把”Bar”存储在一个字符串变量中…… string property = “Bar” Foo foo = new Foo(); 我如何使用property获取foo.Bar的值? 我是如何在PHP中使用它的 $property = “Bar”; $foo = new Foo(); echo $foo->{$property};

过滤掉Type.GetMethods()返回的自动生成的方法(getter / setter / add / remove / .etc)

我使用Type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic)来检索给定类型的方法数组。 问题是返回的MethodInfo可能包含由我不想要的编译器生成的方法。 例如: property bool Enabled { get; } 将得到bool get_Enabled() 事件SomethingChanged将获得add_SomethingChanged(EventHandler)和remove_SomethingChanged(EventHandler) 我可以添加一些filter逻辑来摆脱它们,这可能会变得非常复杂。 我想知道是否还有其他我可以做的事情,例如使用BindingFlags设置,只检索用户定义的方法?

如何将.net属性应用于返回类型

如何将MarshalAsAttribute应用于下面代码的返回类型? public ISomething Foo() { return new MyFoo(); }

对象初始值设定项内的属性可以互相引用吗?

在动态对象创建匿名类型对象(即在对象初始化程序内)期间,属性是否可能以某种方式相互引用? 下面的简化示例需要重用Age属性,而不需要对GetAgeFromSomewhere()进行第二次大量调用。 当然它不起作用。 有关如何实现这一目标的任何建议? var profile = new { Age = GetAgeFromSomewhere(id), IsLegal = (Age>18) }; 对于动态对象匿名类型的对象初始化器,这样的事情是可能的还是不可能的 ?

在运行时将属性添加到POCO类

我为我的项目选择了ServiceStack OrmLite ,这是一个纯数据导向的应用程序。 我愿意允许最终用户创建自己的XML格式定义的对象类型,这些格式将用于在运行时使用CodeDOM生成类。 我还将定义应用程序(即User )所需的一些“系统”对象,但我无法预见最终用户将使用的所有属性,因此我正在寻找一种方法来允许扩展我在设计时创建的类。 样品波纹管 public class User { public Guid Uid { get; set; } public String Username { get; set; } public String Password { get; set; } } 最终用户希望拥有Email和Address 。 他应该能够将2个属性添加到上层类,并且整个类将是(OrmLite仍然可以使用它,因为它允许覆盖: public class User { public Guid Uid { get; set; } public String Username { get; set; } public […]

动态设置C#匿名类型的属性名称

有没有办法动态设置匿名类型的属性名称? 通常我们会这样做: var anon = new { name = “Kayes” }; 现在我想动态设置属性的名称(或标识符),以便此名称可以来自XML文件或数据库。 谢谢你的回答。 不,我的需要绝对不值得所有繁琐的选择。 我只想让我的代码符合我的团队负责人开发的现有库。 但我们决定更新库以支持Dictionary类型,以便轻松解决。 Pete,我很高兴了解.NET 4.0中的动态类型 谢谢。