Компилятор не может определить тип, потому что вы передаете null в качестве второго параметра.
performSelectorAfterDelay(new Action(funcA), null, kSecondsWaitAfterTransferToFollowersPage);
В любом случае, после того как вы решите эту проблему, у вас будет другая ошибка, потому что funcB
принимает int
, поэтому его нельзя передать в new Action
, потому что Action
требует метода без параметров.
Возможно, вы сможете заставить его работать, используя Action<object>
согласно другому ответу, но это будет означать, что вы не можете оставить funcA
без параметра. Однако, это решение кажется излишним, если я что-то не так понимаю. Вы можете просто передать фактическое действие, которое вызывает funcA / funcB со своими параметрами, например:
public void performSelectorAfterDelay(Action method, double delay)
{
Thread thread = new Thread(delegate ()
{
Thread.Sleep(TimeSpan.FromSeconds(delay));
method();
});
thread.Start();
}
public void test()
{
performSelectorAfterDelay(() => funcA(), kSecondsWaitAfterTransferToFollowersPage);
performSelectorAfterDelay(() => funcB(1), kSecondsWaitAfterTransferToFollowersPage);
}
Ваш код должен быть действителен в XSD 1.1. Для XSD 1.0 необходимо найти обходной путь.
Не могли бы вы просто превратить вашу вещь "национальность" в ее собственный complexType, а затем использовать этот новый сложный тип внутри вашего xs : all?
<xs:complexType name="NationalityType">
<xs:sequence>
<xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:all>
<xs:element name="name" blabla />
<xs:element name="email" blabla />
<xs:element name="nationalities" type="NationalityType" />
</xs:all>
У меня нет ничего под рукой, чтобы проверить это, так что это действительно просто не в моей голове ..... попробуй!
РЕДАКТИРОВАТЬ: проверил это сейчас - это работает, единственная незначительная цена, которую нужно заплатить, это то, что ваш XML должен выглядеть примерно так:
<....>
<email>......</email>
<nationalities>
<nationality>ABC</nationality>
<nationality>CDE</nationality>
</nationalities>
<name>.....</name>
</.....>
Таким образом, вы получаете дополнительный узел, который будет содержать произвольный длинный список <национальность>
элементов.
Марк
хз: выбор
не сработает? Если нет, просто оберните это в последовательности или наоборот.
Или, поскольку «USER» будет иметь несколько дочерних элементов, почему бы не установить его как сложный тип? Нечто подобное должно работать.
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Password" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="unbounded" name="Nationality" type="xs:string" />
</xs:sequence>
</xs:complexType>
Я думаю, что то, что вы ищете, противоречит цели XML. Было бы странно иметь действительный фрагмент XML, подобный этому:
<user>
<nationality/>
<name/>
<nationality/>
<email/>
<nationality/>
</user>
Похоже, вы просите что-то вроде того, что предложил marc_s:
<user>
<name/>
<email/>
<nationality/>
<nationality/>
<nationality/>
<user>
, в который нужно вставить:
<user>
<name/>
<email/>
<nationalities>
<nationality/>
<nationality/>
<nationality/>
</nationalities>
<user>