簡體   English   中英

我怎樣才能使c ++中的函數成為C#中的屬性?

[英]How can i make that the function in c++ will be like a property in C#?

我在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<string> l = new List<string>(f.GetCodecs());

所以我包含3333個索引,其中一些填充了編解碼器的名稱。

我現在要做的是在C#而不是:List l = new List(f.GetCodecs());

以某種方式,我將能夠做到例如:

f.GetCodecs。

當我點擊GetCodecs之后的點時,它將打開一個新的大型編解碼器列表,我可以用箭頭向下和向上移動,然后選擇我想要的那個。

像財產或類似的東西。 現在不像列表那樣。

編輯!

例:

我正在做f.getcodecs。

在最后一點之后,我會看到像這樣的編解碼器:

mpej xvid divx

我會立刻看到它們而不需要循環它。

這就是我認為你在問的問題:

當我輸入f.GetCodecs. 在C ++編輯器中 ,我希望IDE在此之后顯示編解碼器列表,這樣我就可以從列表中選擇一個項目,而不必鍵入f.GetCodecs.mpegCodec

如果那就是你想要的,那么你需要GetCodecs(或者,如果它是一個方法,則返回一個帶有你想要的名字的字段/方法的對象)。 您必須選擇在設計對象時出現的名稱,例如,它不會基於機器上安裝的編解碼器。

如果我正確地解釋了您的問題,那么CodeProject上有一篇很好的文章向您展示了如何執行此操作: C ++ / CLI屬性 - 訪問器方法的語法糖

您需要明確地將其設為屬性:

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;
    }
}

我沒有准備好編譯器,所以我無法測試這段代碼,但你明白了。 更多細節可以在這里找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM