Гэтсби Динамическое изображение

Я решил на этом пути (это немного работает, но это, безусловно, быстрее во время исполнения).

В VB (извините, но я думаю, что это не сложно перевести его на C #), я делаю эта подстановка с RE:

(?<Attr><(.*ComponentModel\.)Bindable\(True\)>)( |\r\n)*(?<Def>(Public|Private|Friend|Protected) .*Property )(?<Name>[^ ]*) As (?<Type>.*?)[ |\r\n](?![ |\r\n]*Get)

с:

Private _${Name} As ${Type}\r\n${Attr}\r\n${Def}${Name} As ${Type}\r\nGet\r\nReturn _${Name}\r\nEnd Get\r\nSet (Value As ${Type})\r\nIf _${Name} <> Value Then \r\n_${Name} = Value\r\nRaiseEvent PropertyChanged(Me, New ComponentModel.PropertyChangedEventArgs("${Name}"))\r\nEnd If\r\nEnd Set\r\nEnd Property\r\n

Это переводит весь код следующим образом:

<Bindable(True)>
Protected Friend Property StartDate As DateTime?

In

Private _StartDate As DateTime?
<Bindable(True)>
Protected Friend Property StartDate As DateTime?
    Get
        Return _StartDate
    End Get
    Set(Value As DateTime?)
        If _StartDate <> Value Then
            _StartDate = Value
            RaiseEvent PropertyChange(Me, New ComponentModel.PropertyChangedEventArgs("StartDate"))
        End If
    End Set
End Property

И если я хочу иметь более читаемый код, я могу сделать обратное, просто сделав следующую замену:

Private _(?<Name>.*) As (?<Type>.*)[\r\n ]*(?<Attr><(.*ComponentModel\.)Bindable\(True\)>)[\r\n ]*(?<Def>(Public|Private|Friend|Protected) .*Property )\k<Name> As \k<Type>[\r\n ]*Get[\r\n ]*Return _\k<Name>[\r\n ]*End Get[\r\n ]*Set\(Value As \k<Type>\)[\r\n ]*If _\k<Name> <> Value Then[\r\n ]*_\k<Name> = Value[\r\n ]*RaiseEvent PropertyChanged\(Me, New (.*ComponentModel\.)PropertyChangedEventArgs\("\k<Name>"\)\)[\r\n ]*End If[\r\n ]*End Set[\r\n ]*End Property

С

${Attr} ${Def} ${Name} As ${Type}

я бросаю чтобы заменить IL-код установленного метода, но я не могу написать много скомпилированного кода в IL ... Если в день я его напишу, я скажу вам!

0
задан AC1 7 March 2019 в 12:41
поделиться

1 ответ

Я не думаю, что вам нужно require для этого. Почему бы не использовать пропущенную вами опору и запечь ее в виде строкового литерала, который вы вставляете в компонент (без обязательного запроса и вне возврата)?

const mobilePath = `./../images/BG/${props.bgmobile}_Mobile.jpg`;
const desktopPath = `./../images/BG/${props.bgdesktop}_Desktop.jpg`;

return(
  <Heroes mobile={mobilePath} desktop={desktopPath} />
)

РЕДАКТИРОВАТЬ: часть substring можно добавить в либо <Heroes> до прохождения опоры. Или путем фильтрации проп в <Hero> и передачи этой переменной вместо проп

0
ответ дан Billie Bobbel 7 March 2019 в 12:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: