1

.net 4 では、実行時にプロパティを割り当てることができる動的オブジェクトが導入されました。動的オブジェクトがあり、別の型にキャストする必要があります。以下はコードスニペットです

public class eObject : DynamicObject
{

        Dictionary<string, object> m_dictFields = new Dictionary<string, object>();

        private string m_strName;
        public string Name
        {
            get { return m_strName; }
            set { m_strName = value; }
        }

public override bool TryGetMember(GetMemberBinder binder, out object result)
 {
   if (m_dictFields.ContainsKey(binder.Name))
   {
    result = m_dictFields[binder.Name];
    return true;
  }
 else
 {
    return base.TryGetMember(binder, out result);
 }
}

public override bool TrySetMember(SetMemberBinder binder, object value)
 {
    if (!m_dictFields.ContainsKey(binder.Name))
      m_dictFields.Add(binder.Name, value);
    else
      m_dictFields[binder.Name] = value;
    return true;
 }
}



   // now I am assigning properties to my dynamic object as 

    static void Main(string[] args)
    {
        dynamic organization = new eObject();
        organization.Name = "Test Org Name";
        organization.ModifiedOn = DateTime.Now;
        organization.CreatedOn = DateTime.Now;
        organization.ModifiedBy = "Test Modified by";
        oganization.CreatedBy = "Test User";
        // this is what i have done
        eObject newOrg = organization as eObject;

        Console.WriteLine("Org Name: " +organization.Name);  // working            

        Console.WriteLine("Org Name: " +newOrg.Name);  // not working

    }

newOrg オブジェクトを取得していますが、動的に追加したフィールドにアクセスできません。ありがとう

4

1 に答える 1