2009-02-23 62 views
0

我正在看一个用Java实现的模式,并且有一些关于它如何对齐(可以移植到)C#的问题。如何将此Java代码移植到C#?

爪哇:

class Foo 
{ 
    private Class someClass; 
    ... 
} 

class Bar 
{ 
    private Field some Field; 
} 

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

其次,现场的类型是在框架中,并通过使用分配:

someClass.getDeclaredField(fieldName) 

有没有在.NET framework中,我应该使用并行?

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

回答

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

您也可以通过使用获得字段的值:

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

在这个例子中,我们假设类Foo有一个名为场“名称”。这有什么帮助?那么认为它是这样的:

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

即使更改类foo和新字段添加到它,你不需要改变getValueOfUnknownField方法。