2017-02-17 17 views
0

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

class M { 
    [string] $someProperty 
} 

ClientModule.psm1:

using module Main 
class C { 
    [M] $mClass # this does not work 
} 
$mClass = [M]::new() # this works 

ли я что-то отсутствует? Может ли моя цель быть достигнута каким-то другим способом? (Я надеюсь избежать точка-сорсинг)

+0

Вашего кода copypasted как работает для меня в PS5.1. Вы уверены, что 'using module' является первым утверждением в вашем полном скрипте? – wOxxOm

+0

Я понял это, но я не думаю, что это требует ответа, поскольку это была довольно глупая ошибка: у меня также был файл манифеста для M и я забыл расколоть RootModule =, который по существу превратил M в пустую оболочку. – SirRichie

ответ

0

Я думаю, вы можете попробовать Наследование таких как

using module Main 
Class C : M 
{ 

} 

Большой справочник для классов Powershell можно найти на https://xainey.github.io/2016/powershell-classes-and-concepts/#inheritance

+0

Если мой скрипт не может найти M, то я также не могу наследовать от M. Кроме того, моя цель - состав, а не наследование. – SirRichie