Интерфейс, необходимый для доступа к переопределенному абстрактному свойству в классах, производных от общей абстрактной базы?

getopt() / getopts() является хорошим вариантом. здесь :

Простое использование «getopt» показано в этом мини-скрипте:

#!/bin/bash
echo "Before getopt"
for i
do
  echo $i
done
args=`getopt abc:d $*`
set -- $args
echo "After getopt"
for i
do
  echo "-->$i"
done

Мы сказали, что любой из -a, -b, -c или -d будет разрешен, но за -c следует аргумент (говорит «c:»).

Если мы назовем это «g» и попробуем:

bash-2.05a$ ./g -abc foo
Before getopt
-abc
foo
After getopt
-->-a
-->-b
-->-c
-->foo
-->--

Начнем с двух аргументов, а «getopt» разрывает опции и помещает их в свои собственный аргумент. Он также добавил «-».

1
задан Brett Rossier 26 March 2019 в 17:51
поделиться

1 ответ

Вам нужно будет ввести новый общий тип. Как только новый тип введен, вы можете устранить необходимость интерфейса.

public class UtilityThing<T, I> where T : Thing<I>, new()
{
    public T DoIt(SomeContext someContext, string name)
    {
        string contextVal = someContext.GetValue(name);

        var thing = new T { MyProperty = contextVal };
        return thing;
    }
}

И вы можете использовать его так:

var utility = new UtilityThing<IntThing, int?>();
0
ответ дан Brett Rossier 26 March 2019 в 17:51
поделиться
Другие вопросы по тегам:

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