2013-04-21 125 views
2

訪問類似javascript語言的c#類屬性會讓生活變得更容易。C#類的屬性包

我們如何在C#中做到這一點?

例如:

someObject["Property"]="simple string"; 
Console.WriteLine(someObject["FirstName"]); 

回答

4

這裏是你如何可以通過添加幾行代碼啓用你的類屬性袋一樣的功能:

partial class SomeClass 
{ 
    private static readonly PropertyDescriptorCollection LogProps = TypeDescriptor.GetProperties(typeof(SomeClass)); 

    public object this[string propertyName] 
    { 
     get { return LogProps[propertyName].GetValue(this); } 
     set { LogProps[propertyName].SetValue(this, value); } 
    } 
} 
+0

真的很有意思。 – Revious 2014-02-21 11:38:24

0

dynamic關鍵字可以用來代替

dynamic foo = ... 
foo.Property = "simple string"; 
Console.WriteLine(foo.Property); 
+0

我們可以使用foo [「Property」] =「簡單字符串」嗎? – 2013-04-21 13:05:22

0

你可以從得到每一個類10。但是,您可以簡單地使用JavaScript而不是濫用C#。

+0

我同意你的觀點,但是在某些應用程序中存在這樣一種情況,即像上面那樣訪問屬性可以使代碼非常易讀並且易於使用。 – 2013-04-21 13:04:22

1

此代碼將工作

dynamic user= new ExpandoObject(); 
user.name = "Anonymous"; 
user.id=1234 
user.address="12 broad way" 
user.State="NY" 

進口System.Dynamic命名空間。