属性赋值

【Help】 2016-01-08 02:38:11

public class Test
{
[DisplayName("AAA")]
public string Name { get; set; }
}

有这么一个属性,我后台想通过AAA特性给Name赋值。也就类似key value这样
...全文
213 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Poopaye 2016-01-08
  • 打赏
  • 举报
回复
引用 8 楼 zhanglong_longlong 的回复:
肯定不给他一样的名字
好吧,其实不管有没有一样的,只能通过遍历来赋值 public void Get(string str, string ss) { foreach (var item in this.GetType().GetProperties()) { DisplayNameAttribute attr = item.GetCustomAttribute<DisplayNameAttribute>(); if (attr != null && attr.DisplayName == str) { item.SetValue(this, ss); break; } } }
猫霸 2016-01-08
  • 打赏
  • 举报
回复
直接通过属性就可以获取,为什么一定要通过标签名称获取呢
xdashewan 2016-01-08
  • 打赏
  • 举报
回复
引用 9 楼 zhanglong_longlong 的回复:
我的DisplayName("AAA")里面是固定的,想通过这个给对应的属性赋值
你好歹也level5,不至于要代码全写才明白吧,能取到元属性的值了还没法赋值吗,怎么循环字段不用我再写了吧

if (ma1.DisplayName.Equals("AAA"))
            {
                PropertyInfo piInstance =
                typeof(TestModel).GetProperty(f1.Name);
                piInstance.SetValue(st, "123", null);
            }
【Help】 2016-01-08
  • 打赏
  • 举报
回复
我的DisplayName("AAA")里面是固定的,想通过这个给对应的属性赋值
【Help】 2016-01-08
  • 打赏
  • 举报
回复
引用 7 楼 shingoscar 的回复:
[quote=引用 4 楼 zhanglong_longlong 的回复:] [quote=引用 3 楼 xdashewan 的回复:]

Type clsType = typeof(Test);
MemberInfo f1 = clsType.GetMember("Name")[0]; //这里省略循环,判断等过程
DisplayNameAttribute ma1 = (DisplayNameAttribute)Attribute.GetCustomAttribute(f1, typeof(System.ComponentModel.DisplayNameAttribute));
string dspval = ma1.DisplayName;
不是这个,比如一个方法public void Get(string str,string ss){ }这里的str参数可能传的就是Name的特性名称”AAA“,ss参数就是想给Name属性的值[/quote] public class Test { [DisplayName("AAA")] public string Name { get; set; } [DisplayName("AAA")] public string Name2 { get; set; } } 你告诉我像这样写到底是给那个属性赋值?[/quote]肯定不给他一样的名字
Poopaye 2016-01-08
  • 打赏
  • 举报
回复
引用 4 楼 zhanglong_longlong 的回复:
[quote=引用 3 楼 xdashewan 的回复:]

Type clsType = typeof(Test);
MemberInfo f1 = clsType.GetMember("Name")[0]; //这里省略循环,判断等过程
DisplayNameAttribute ma1 = (DisplayNameAttribute)Attribute.GetCustomAttribute(f1, typeof(System.ComponentModel.DisplayNameAttribute));
string dspval = ma1.DisplayName;
不是这个,比如一个方法public void Get(string str,string ss){ }这里的str参数可能传的就是Name的特性名称”AAA“,ss参数就是想给Name属性的值[/quote] public class Test { [DisplayName("AAA")] public string Name { get; set; } [DisplayName("AAA")] public string Name2 { get; set; } } 你告诉我像这样写到底是给那个属性赋值?
Poopaye 2016-01-08
  • 打赏
  • 举报
回复
引用 2 楼 zhanglong_longlong 的回复:
[quote=引用 1 楼 shingoscar 的回复:]
public class Test
{
	private string _name;
	[DisplayName("AAA")]
	public string Name 
	{
		get
		{
			if (_name == null)
				_name = this.GetType().GetProperty("Name").GetCustomAttribute<DisplayNameAttribute>().DisplayName;
			return _name;
		}
	}
}
不是,我是想通过AAA这个特性名称给Name属性赋值[/quote] 这不都能取到AAA了吗?难道你连稍微的修改都不会吗
  • 打赏
  • 举报
回复
最好重新考虑下设计方案,一般都是传属性名,你这倒好,传特性里面的某个text,后续不确定性太多 如果你一定要的话,上面的代码已经快接近你要的了 只不过他们的例子是直接写了,你是需要获取所有的属性(假设你的DisplayName只在属性上有),然后后面就是按三楼的代码取到DisplayNameAttribute ,判断它的DisplayName是不是你传入的,是的话,就将当前属性进行赋值
【Help】 2016-01-08
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:

Type clsType = typeof(Test);
MemberInfo f1 = clsType.GetMember("Name")[0]; //这里省略循环,判断等过程
DisplayNameAttribute ma1 = (DisplayNameAttribute)Attribute.GetCustomAttribute(f1, typeof(System.ComponentModel.DisplayNameAttribute));
string dspval = ma1.DisplayName;
不是这个,比如一个方法public void Get(string str,string ss){ }这里的str参数可能传的就是Name的特性名称”AAA“,ss参数就是想给Name属性的值
xdashewan 2016-01-08
  • 打赏
  • 举报
回复

Type clsType = typeof(Test);
MemberInfo f1 = clsType.GetMember("Name")[0]; //这里省略循环,判断等过程
DisplayNameAttribute ma1 = (DisplayNameAttribute)Attribute.GetCustomAttribute(f1, typeof(System.ComponentModel.DisplayNameAttribute));
string dspval = ma1.DisplayName;
【Help】 2016-01-08
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
public class Test
{
	private string _name;
	[DisplayName("AAA")]
	public string Name 
	{
		get
		{
			if (_name == null)
				_name = this.GetType().GetProperty("Name").GetCustomAttribute<DisplayNameAttribute>().DisplayName;
			return _name;
		}
	}
}
不是,我是想通过AAA这个特性名称给Name属性赋值
Poopaye 2016-01-08
  • 打赏
  • 举报
回复
public class Test
{
	private string _name;
	[DisplayName("AAA")]
	public string Name 
	{
		get
		{
			if (_name == null)
				_name = this.GetType().GetProperty("Name").GetCustomAttribute<DisplayNameAttribute>().DisplayName;
			return _name;
		}
	}
}

62,270

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧