2009-02-23 4 views
0

Я смотрю шаблон, реализованный на Java, и у вас есть некоторые вопросы о том, как он выравнивается (может быть перенесен на) C#.Как я могу поместить этот код Java в C#?

Java:

class Foo 
{ 
    private Class someClass; 
    ... 
} 

class Bar 
{ 
    private Field some Field; 
} 

хранит Во-первых, класс экземпляра объекта домена. Похоже, Java предоставляет методы отражения для типа, который используется для доступа к полям объекта через отражение. Что бы напечатать было бы синонимом в C#? Будет ли я использовать объект, а затем использовать MethodInfo или есть лучший способ?

Во-вторых, Поле типа в рамках и назначается с помощью:

someClass.getDeclaredField(fieldName) 

Есть ли параллельно в рамках .NET я должен использовать?

В настоящее время я создал пользовательский объект вместо класса в Foo, и я создал пользовательский объект для поля. Есть ли предпочтительный способ сделать это?

ответ

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.

Смежные вопросы