c#编写com组件以及在silverlight中调用 - 洛阳知道 免费ASP.NET/Java程序员培训

c#编写com组件以及在silverlight中调用

发布时间: 2010-07-29 11:40:02  约 69 人浏览

c#编写com组件

  1.新建windows类库应用程序,在properties目录AssemblyInfo文件中,将ComVisible(False)设置成ComVisible(true)。

  2.在项目属性,build选项,勾选register for com interop。

  3.编写com代码(sensorEvents定义事件接口)。

  如下:

  

[Guid("368C19C3-A726-49b5-A2D8-482680ADDA1D")]
public interface ISensorManagerEx
{
[DispId(
1)]
Accelerometer3D[] GetAcceleromreter3DSensors();
}

[Guid(
"47C976E0-C208-4740-AC42-41212D3C34F0")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface SensorEvents
{
[DispId(
1)]
void SensorsChanged(SensorsChangedEventArgs e);
}

[ComVisible(
true)]
[Guid(
"0E09C797-F5D4-495F-8D30-A975A8434454")]
[ProgId(
"SensorsCom.SensorManagerEx")]
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(
typeof(SensorEvents))]
public class SensorManagerEx : ISensorManagerEx
{
public SensorManagerEx()
{
SensorManager.SensorsChanged
+= new SensorsChangedEventHandler(SensorManager_SensorsChanged);
}

public event SensorsChangedEventHandler SensorsChanged;

void SensorManager_SensorsChanged(SensorsChangedEventArgs e)
{
SensorsChanged(e);
}

public Accelerometer3D[] GetAcceleromreter3DSensors()
{
return SensorManager.GetSensorsByTypeId<Accelerometer3D>().ToArray();
}
}

  4.编译dll,使用命令C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe SensorsCom.dll注册com。

到此c#写COM已经OK了!

 

silverlight中调用com

  1.将silverlight程序设置为最高权限,OOB模式。否则silverlight不能调用com。

  2.调用代码

  如下:

  

using (dynamic SensorManager = AutomationFactory.CreateObject("SensorsCom.SensorManagerEx"))
{
dynamic SensorList
= SensorManager.GetAcceleromreter3DSensors();

AutomationEvent SensorReportEvent
= AutomationFactory.GetEvent(SensorManager, "SensorsChanged");
SensorReportEvent.EventRaised
+= (s, arges) =>
{
//do what you want.
};

}

 

热门文章

友情链接: 围棋教学网 我的博客 大气象学习乐园 博客园 会计培训 洛阳知道论坛 梦想开始的地方 python课堂 铁闸网 GHS可用IP 我就要嗨吧 DJ摇摇网
给我留言
[关闭]