我遇到COM兼容性问题。该链接已经非常有用,COM interface Photoshop compatibility issue,解释COM后续绑定可以解决COM兼容性问题。我试过这个,但我现在困惑于如何使用我通过COM对象访问的类型。从COM对象获取具有后期绑定的类/类型
原始代码:
//This works with late binding
m_Application = new Photoshop.Application();
var refe = new Photoshop.ActionReference();
refe.PutProperty(m_Application.CharIDToTypeID("Prpr"), m_Application.CharIDToTypeID("NmbL"));
//This is the problem area
var ColorlendMode = Photoshop.PsBlendMode.psColorBlend;
var visibleLayers = new List<Photoshop.ArtLayer>();
后期绑定代码:
//works...
dynamic m_Application = Activator.CreateInstance(Type.GetTypeFromProgID("Photoshop.Application"));
dynamic refe = Activator.CreateInstance(Type.GetTypeFromProgID("Photoshop.ActionReference"));
refe.PutProperty(m_Application.CharIDToTypeID("Prpr"), m_Application.CharIDToTypeID("NmbL"));
//PROBLEM:
//Doesn't compile
Type BlendModeType = Type.GetTypeFromProgID("Photoshop.PsBlendMode").psColorBlend;
//returns null
//Type BlendModeType = Type.GetTypeFromProgID("Photoshop.PsBlendMode");
//Type artLayerType = Type.GetTypeFromProgID("Photoshop.ArtLayer");
的编译erorr是:
'System.Type' does not contain a definition for 'psColorBlend'
所以我如何才能枚举PsBlendMode,我用得到与Photoshop COM对象(在我的项目中添加为参考)?
谢谢!这对于枚举来说是完美的! 对于有人建议的接口我试试这个:http://www.codeproject.com/Articles/10888/ SafeCOMWrapper管理一次性-强类型-S。 – VincentC