C#dynamicは動的言語実行時のクラス(強い言語での弱い言語実装)をサポートする
9809 ワード
強い言語システムにおける弱い言語操作方式テクニックjsonのノードクエリー 型変換 簡略化反射
dynamicキーワードと利点と劣勢、タイプ変換、Dictionary間の変換を参照dynamicの正しい使い方を参照
コンパイル時にタイプチェックを行わないdynamic str="abc";
int number= str; // , (implicitly Convert)
string json = @"[
{
'Title': 'Json.NET is awesome!',
'Author': {
'Name': 'James Newton-King',
'Twitter': '@JamesNK',
'Picture': '/jamesnk.png'
},
'Date': '2013-01-23T19:30:00',
'BodyHtml': '<h3>Title!</h3>\r
<p>Content!</p>'
}
]";
dynamic blogPosts = JArray.Parse(json);
dynamic blogPost = blogPosts[0];
string title = blogPost.Title;
Console.WriteLine(title);
// Json.NET is awesome!
string author = blogPost.Author.Name;
Console.WriteLine(author);
// James Newton-King
DateTime postDate = blogPost.Date;
Console.WriteLine(postDate);
// dynamic objec , object , dynamic , object 。
dynamic nd= 123;
int val = nd;//
objetct obj = 123;
int count = obj; // , Convert.int()
dynamic d1 = 7;
dynamic d2 = "a string";
dynamic d3 = System.DateTime.Today;
dynamic d4 = System.Diagnostics.Process.GetProcesses();
int i = d1;
string str = d2;
DateTime dt = d3;
System.Diagnostics.Process[] procs = d4;
// dynamic Dictionary
dynamic data = new Person();
IDictionary<string,object> dic =data as IDictionary<string,object>;
// Dictionary dynamic
for(KeyValuePair<string,object> item in dic)
{
((IDictionary<string,object> )data).add(item.key,item.value);
}
//dynamic
dynamic p = Activator.CreateInstance(typeof(person));
p.talk("muse");
//
var p1 = new person();
var takdMethod = typeof(person).GetMethod("talk");
takdMethod.Invoke(p1,new object[] { "kitty"});
dynamicキーワードと利点と劣勢、タイプ変換、Dictionary間の変換を参照dynamicの正しい使い方を参照