Как преодолеть один и тот же тип в двух пространствах имен, System.Linq.Expressions.Expression <TDelegate>? - PullRequest
0 голосов
/ 14 апреля 2009

Я определяю некоторые переменные Expression в своем приложении и мне нужна ссылка на Microsoft.Scripting.Core. Эта сборка включает в себя то же пространство имен, что и сборка System.Core из основной среды .Net.

Я хочу использовать определения из сборки System.Core, поскольку она стабильна, тогда как Microsoft.Scripting.Core имеет альфа-версию.

Как мне указать моему приложению отдавать предпочтение пространству имен System.Linq.Expressions в System.Core вместо Microsoft.Scripting.Core, но при этом сохранять ссылку на него?

Ответы [ 2 ]

1 голос
/ 14 апреля 2009

Как говорит Марк, это не очень приятно - но внешние псевдонимы - это путь.

В части «Ссылки» обозревателя решений выберите сборку System.Core, перейдите в свойства. Измените свойство «Псевдонимы», добавив в него «syscore», например

Aliases: global,syscore

Затем в верхней части любого файла, где вы хотите использовать System.Linq.Expressions, введите:

extern alias syscore;
using syscore::System.Linq.Expressions;

Это некрасиво, но, по крайней мере, это возможно:)

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

1 голос
/ 14 апреля 2009

Если это одно и то же пространство имен, но разные сборки, то вам может понадобиться посмотреть на "внешний псевдоним", но это очень быстро запутывается.

Если это разные пространства имен, просто используйте разные директивы using; Вы также можете использовать using псевдоним. Однако лямбды всегда (AFAIK) будут использовать исходное пространство имен.

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