C#类的属性包

时间:2013-04-21 12:38:38

标签: c# reflection properties indexer propertybag

访问像javascript语言这样的c#类属性会让生活变得更轻松。

我们如何在C#中做到这一点?

例如:

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

4 个答案:

答案 0 :(得分:6)

以下是通过添加几行代码在类中启用类似属性包的功能的方法:

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); }
    }
}

答案 1 :(得分:1)

此代码可以使用

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

导入System.Dynamic命名空间。

答案 2 :(得分:0)

可以使用

dynamic关键字

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

答案 3 :(得分:0)

您可以从Dictionary<string, object>派生每个班级。但是,你可以简单地使用JavaScript而不是滥用C#。