如何将此Java代码移植到C#?

时间:2009-02-23 22:46:08

标签: c# java design-patterns reflection

我正在研究用Java实现的模式,并对如何与C#(可移植到)C#进行对齐有一些疑问。

爪哇:

class Foo
{
    private Class someClass;
    ...
}

class Bar
{
    private Field some Field;
}

首先,Class存储域对象的实例。看起来Java在类型上公开了反射方法,用于通过反射访问对象上的字段。什么类型将成为C#的同义词?我会使用对象然后使用MethodInfo还是有更好的方法?

其次,Field是框架中的类型,使用以下命令分配:

someClass.getDeclaredField(fieldName)

我应该使用.NET框架中的并行吗?

现在我创建了一个自定义对象来代替Foo中的Class,我为Field创建了一个自定义对象。有没有一种首选的方法呢?

2 个答案:

答案 0 :(得分:5)

您可以查看FieldInfo类型和GetField方法。

代码可能看起来像行:

class Foo
{
    public Type someClass;
    ...
}

class Bar
{
    private FieldInfo some_Field;

    public Assign(string fieldName)
    {
        Foo foo = new Foo();
        some_Field = foo.someClass.GetField(fieldName);
    }
}

答案 1 :(得分:0)

您还可以使用以下方法获取字段的值:

 foo.GetType().GetField("name").GetValue(foo).ToString()

在这个例子中,我们假设类foo有一个名为“name”的字段。这有什么用?好吧就这样想:

private string getValueOfUnknownField(string fieldName)
{
    return(foo.GetType().GetField(fieldName).GetValue(foo).ToString());
}

即使您更改了类foo并向其添加新字段,也无需更改getValueOfUnknownField方法。