-1
public class Test{
    public string name{get;set}
    public short age{get;set;}
}

....

var type = typeof(Test);

var ins = Activator.CreateInstance(type);

type.InvokeMember("name", BindingFlags.DeclaredOnly |
                    BindingFlags.Public | BindingFlags.NonPublic |
                    BindingFlags.Instance | BindingFlags.SetProperty, null,   ins ,new object[] { "alibaba" });

type.InvokeMember("age", BindingFlags.DeclaredOnly |
                    BindingFlags.Public | BindingFlags.NonPublic |
                    BindingFlags.Instance | BindingFlags.SetProperty | BindingFlags.SetField | BindingFlags.SuppressChangeType, null, ins ,new object[] { 2 });

...

メソッド「age」の例外が実行時にスローされ、「age」のタイプをintまたは他の32+数値タイプに変更すると機能します

InvokeMember が short,int16 などの型をサポートしていないかどうか。または、値を割り当てる別の方法を変更するかもしれません。

どんな助けでも大歓迎です

4

1 に答える 1