我正在研究用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创建了一个自定义对象。有没有一种首选的方法呢?
答案 0 :(得分:5)
代码可能看起来像行:
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方法。