我希望能够通过从组合框中选择“ int”,“ bool”或“ string”来设置数据网格中每个条目的动态属性“ Value”的类型。
数据网格绑定到包含Value属性的以下类的ObservableCollection:
public class TagIO
{
public string Name { get; set; }
public dynamic Value { get; set; }
}
这是我将datagrid的源绑定到的集合:
ObservableCollection<TagIO> InputCollection = new ObservableCollection<TagIO>();
如何从Datagridview中将Value属性设置为指定的类型?我在考虑添加另一个名为“类型”的属性,并使其成为组合框列以指定类型(int,bool等)。
答案 0 :(得分:0)
在C#中使用动态属性可能会导致问题,并且通常被认为是不好的做法,除非您遇到某些需要的情况(例如COM互操作)。无论如何,我都会亲自将值存储为字符串,然后在需要时尝试对它进行ID| StringVal | value
--------------------------------
1 | text|another|other | text
1 | text|another|other | another
1 | text|another|other | other
。
现在您有了我的2美分,这就是您可以实现所需目标的方法。
您说应该在类中添加一个属性来处理TryParse()
是正确的。通过添加该属性,您可以利用Type
返回动态信息。
示例:
Convert.ChangeType
示例用法
public class TagIO
{
//Create a private field to store your dynamic's value
private dynamic val;
//Create a property to store Type
public Type MyType{get;set;}
public string Name{get;set;}
public dynamic Value
{
get
{
//Return dynamic value as specified type
return Convert.ChangeType(val, MyType);
}
set
{
//set dynamic value.
val = value;
}
}
}