Dmy*_*tro 122 c# dynamic viewbag
在那里,例如,类的ViewBag属性,ControllerBase我们可以动态获取/设置值并向该对象添加任意数量的附加字段或属性,这很酷.我想使用类似的东西,超出MVC应用程序和Controller其他类应用类型.当我尝试创建动态对象并设置它的属性如下所示:
1. dynamic MyDynamic = new { A="a" };
2. MyDynamic.A = "asd";
3. Console.WriteLine(MyDynamic.A);
Run Code Online (Sandbox Code Playgroud)
我有RuntimeBinderException消息属性或索引器'<> f__AnonymousType0.A'无法分配 - 它只在第2行读取.另外我建议它不是我正在寻找的.也许有些课程可以让我做一些像:
??? MyDynamic = new ???();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = DateTime.Now;
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
Run Code Online (Sandbox Code Playgroud)
具有动态添加和设置属性.
Mar*_*num 260
dynamic MyDynamic = new System.Dynamic.ExpandoObject();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = "C";
MyDynamic.Number = 12;
MyDynamic.MyMethod = new Func<int>(() =>
{
return 55;
});
Console.WriteLine(MyDynamic.MyMethod());
Run Code Online (Sandbox Code Playgroud)
阅读有关ExpandoObject类的更多信息以及更多示例:表示一个对象,其成员可以在运行时动态添加和删除.
not*_*row 32
ExpandoObject 你在找什么
dynamic MyDynamic = new ExpandoObject(); // note, the type MUST be dynamic to use dynamic invoking.
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = "C";
MyDynamic.TheAnswerToLifeTheUniverseAndEverything = 42;
Run Code Online (Sandbox Code Playgroud)
Ali*_*mCA 29
我最近需要更进一步,这是根据用户定义的条目,在动态对象中添加属性,动态自己.此处的示例以及Microsoft的ExpandoObject文档中的示例并未专门针对动态添加属性,但可以通过枚举和删除属性的方式进行推测.无论如何,我认为这可能对某人有所帮助.以下是如何向ExpandoObject添加真正动态属性的极其简化版本(忽略关键字和其他处理):
// my pretend dataset
List<string> fields = new List<string>();
// my 'columns'
fields.Add("this_thing");
fields.Add("that_thing");
fields.Add("the_other");
dynamic exo = new System.Dynamic.ExpandoObject();
foreach (string field in fields)
{
((IDictionary<String, Object>)exo).Add(field, field + "_data");
}
// output - from Json.Net NuGet package
textBox1.Text = Newtonsoft.Json.JsonConvert.SerializeObject(exo);
Run Code Online (Sandbox Code Playgroud)
sme*_*asn 21
dynamic myDynamic = new { PropertyOne = true, PropertyTwo = false};
Run Code Online (Sandbox Code Playgroud)
Kis*_*mar 11
您可以使用ExpandoObject Class它在System.Dynamic命名空间.
dynamic MyDynamic = new ExpandoObject();
MyDynamic.A = "A";
MyDynamic.B = "B";
MyDynamic.C = "C";
MyDynamic.SomeProperty = SomeValue
MyDynamic.number = 10;
MyDynamic.Increment = (Action)(() => { MyDynamic.number++; });
Run Code Online (Sandbox Code Playgroud)
可以在ExpandoObject MSDN上找到更多信息
小智 11
var data = new { studentId = 1, StudentName = "abc" };
Run Code Online (Sandbox Code Playgroud)
或者值存在
var data = new { studentId, StudentName };
Run Code Online (Sandbox Code Playgroud)