В VB.net этот код в порядке:

Dim oPS as Object= CreateObject("Photoshop.Application.10")
Dim oDocument as Object= oPS.ActiveDocument

Но в C # в этом коде возникает ошибка:

Object oPS = COMCreateObject("Photoshop.Application.10");
Object oDocument = oPS.ActiveDocument;

Ошибка при сборке

Error   2   'object' does not contain a definition for 'ActiveDocument' and no extension method 'ActiveDocument' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)

Как получить дочерние объекты объекта в C # (тот же vb.net)?

2
D T 22 Апр 2016 в 10:26

3 ответа

Лучший ответ

Используйте ключевое слово dynamic вместо object:

dynamic oPS = COMCreateObject("Photoshop.Application.10");
dynamic oDocument = oPS.ActiveDocument;

Ссылка MSDN здесь: https://msdn.microsoft.com/en-us/library /dd264736.aspx

4
mathieu 22 Апр 2016 в 07:30

В .net 4 или новее вы должны использовать для этой цели dynamic. Это должно быть примерно так:

var _type= Type.GetTypeFromProgID("Photoshop.Application.10");
dynamic inst= Activator.CreateInstance(_type);
inst.Visible = true;
1
H. Senkaya 22 Апр 2016 в 07:34

Используйте динамическое ключевое слово для вашей проблемы.

1
Deepak 22 Апр 2016 в 07:36