Универсальный Тип в конструкторе

Вы можете. Используйте комбинацию amp-bind / amp-list / amp-mustache с конечной точкой JSON. Конечная точка предоставляет вам контент динамически.

Если вы просто хотите изменить позицию, вы можете добавить классы с помощью amp-bind и что-то вроде

[CLASS]='position ? "newPosition" : "" '
41
задан Svante 31 March 2009 в 14:02
поделиться

1 ответ

Вы не можете сделать конструкторов универсальными, но можно использовать универсальный статический метод вместо этого:

public static Constructor CreateInstance<T>(int blah, IGenericType<T> instance)

и затем сделайте то, к чему Вы нуждаетесь после конструктора при необходимости. Другая альтернатива в некоторых случаях могла бы быть должна представить неуниверсальный интерфейс, который расширяет универсальный интерфейс.

Править: Согласно комментариям...

Если Вы хотите сохранить аргумент в недавно созданный объект, и Вы хотите сделать так способом со строгим контролем типов, то тип должен быть универсальным также.

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

public static class Foo
{
    public static Foo<T> CreateInstance<T>(IGenericType<T> instance)
    {
        return new Foo<T>(instance);
    }
}

public class Foo<T>
{
    public Foo(IGenericType<T> instance)
    {
        // Whatever
    }
}

...

IGenericType<string> x = new GenericType<string>();
Foo<string> noInference = new Foo<string>(x);
Foo<string> withInference = Foo.CreateInstance(x);
50
ответ дан Jon Skeet 27 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

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