我在C ++中有这个功能:
List<String^> ^GetCodecs()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
for (int i=0;i<3333;i++)
{
s = gcnew String(Encoder_GetCodecName( i ));
l->Add(s);
}
return l;
}
这是在C#我得到了List:
List<string> l = new List<string>(f.GetCodecs());
所以我包含3333个索引,其中一些填充了编解码器的名称。
我现在要做的是在C#而不是:List l = new List(f.GetCodecs());
以某种方式,我将能够做到例如:
f.GetCodecs。
当我点击GetCodecs之后的点时,它会打开一个新的大型编解码器列表,我可以用箭头向下和向上移动,然后选择我想要的那个。
像财产或类似的东西。而不是现在的列表。
编辑!
示例:
我正在做f.getcodecs。
在最后一点之后,我将看到像这样的编解码器:
mpej XVID 的DivX
我会立刻看到它们而不需要循环它。
答案 0 :(得分:2)
以下是我认为你在问的问题:
当我在C ++编辑器中输入
f.GetCodecs.
时,我希望 IDE 之后显示编解码器列表,以便我可以从中选择一个项目 列表,而不必键入f.GetCodecs.mpegCodec
。
如果这就是你想要的,那么你需要GetCodecs(或者,如果它是一个方法,则返回一个带有字段/方法的对象)。您必须选择在设计对象时出现的名称,例如,它不会基于机器上安装的编解码器。
答案 1 :(得分:0)
如果我正确解释您的问题,可以在CodeProject上找到一篇很好的文章,向您展示如何执行此操作:C++/CLI Properties - Syntactic sugar for accessor methods。
答案 2 :(得分:0)
您需要明确地将其设为属性:
property List<String^> ^GetCodecs
{
List<String^>^ get()
{
List<String^> ^l = gcnew List<String^>;
String ^s;
for (int i=0;i<3333;i++)
{
s = gcnew String(Encoder_GetCodecName( i ));
l->Add(s);
}
return l;
}
}
我没有准备好编译器,所以我无法测试这段代码,但是你明白了。可以找到更多详细信息here。