3

void set_PropertyName(var value)プロパティのおよびvar get_Property()メソッドにアクセスできるようにしたいと考えています。

リフレクションなしでこれを行う方法はありますか?そして取得せずにCompiler Error CS0571

編集 リフレクションなしとは、リフレクションのオーバーヘッドがないことを意味します (コードを記述するだけでなく)。これは、何度も実行する必要があるコードであるため、リフレクションのオーバーヘッドなしで必要です。残念ながら、ダイナミックはカバーの下で反射も使用します。

これは c++.net では可能かもしれませんが、他の言語では可能ではないようです (ただし、C++ のインストールが詰まっているためわかりません)。

ご回答ありがとうございます。

4

1 に答える 1

1

はい、Microsoft.VisualBasic 名前空間から利用可能なcallbynameを使用すれば可能です

元;

using System;
using Microsoft.VisualBasic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new Test();
            Microsoft.VisualBasic.Interaction.CallByName(test, "property" ,CallType.Set, 1);
            Console.WriteLine(Microsoft.VisualBasic.Interaction.CallByName(test, "property", CallType.Get));
            Console.ReadKey(true);
        }
    }

    public class Test
    {
        public int property { get; set; }
    }
}
于 2013-10-23T00:54:40.240 に答える