这是我尝试实例化我的过滤器。
直接在激活器上使用guid
Guid myfilterGuid = Guid.Parse("067216DE-E6A1-49C9-A016-074624C20FE5");
Type t = Type.GetTypeFromCLSID(myfilterGuid);
myfitlter = (IBaseFilter)Activator.CreateInstance(t);
这返回了一个没有注册的""错误。
课程定义
myfitlter = new MyFilter() as IBaseFilter;
MyFilter
的位置:
using System;
using System.Runtime.InteropServices;
namespace YourControlService
{
[Guid("067216DE-E6A1-49C9-A016-074624C20FE5")]
public class MyFilter
{
public MyFilter()
{
}
}
}
返回null。
该类已注册,我可以在Graphstudionext或c ++代码中使用它,因此我不知道为什么它不能用于c#。此外,我不确定我是否正确地在第二种方法中定义了代理类。
奖金问题
为什么我的代码中的内容非法:
[Guid("067216DE-E6A1-49C9-A016-074624C20FE5")]
public class MyFilter
{
public MyFilter(); //Constructor without codeblock; does not compile
}
但是这里还可以吗?
namespace DirectShowLib
{
[Guid("E2510970-F137-11CE-8B67-00AA00A3F1A6")]
public class AviDest
{
public AviDest(); //Constructor without codeblock; compiles
}
}