Как я могу портировать этот код Java на C #? - PullRequest
0 голосов
/ 24 февраля 2009

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

Java:

class Foo
{
    private Class someClass;
    ...
}

class Bar
{
    private Field some Field;
}

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

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

someClass.getDeclaredField(fieldName)

Есть ли параллель в .NET Framework, которую я должен использовать?

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

Ответы [ 2 ]

5 голосов
/ 24 февраля 2009

Вы можете взглянуть на тип 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 голосов
/ 25 февраля 2009

Вы также можете получить значение поля, используя:

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

В этом примере мы предполагаем, что у класса foo есть поле с именем "name". Что это помогает? Ну подумай так:

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

Даже если вы измените класс foo и добавите в него новые поля, вам не нужно менять метод getValueOfUnknownField.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...