我有一个班级图书馆
namespace LabelFieldsCalc
{
public class LabelFields
{
// public string "--";
public string BARCODE128(LabelCarton carton)
{
return "01" + carton.EanTun
+ "3102" + carton.WeightBarcode.ToString()
+ "13" + carton.ItemProdnDate.ToString()
+ "21" + carton.EstNO.ToString() + carton.StationNum.ToString() + carton.ItemSerial.ToString() + "9";
}
public string BARCODE128HR(LabelCarton carton)
{
return "(01)" + carton.EanTun
+ "(3102)" + carton.WeightBarcode.ToString()
+ "(13)" + carton.ItemProdnDate.ToString()
+ "(21)" + carton.EstNO.ToString() + carton.StationNum.ToString() + carton.ItemSerial.ToString() + "9";
}
public string BARCODE13PRICE(LabelCarton carton)
{
var LvTempEan = carton.ProdExtraKey4.Substring(1, 8);
var LcPrice = (carton.Price1 * 100).ToString(">>>>");
int moddigit = ModuloDigit(LvTempEan + LcPrice);
return LvTempEan + LcPrice;
}
private int ModuloDigit(string v)
{
//int k = v.Length;
int tot1 = 0;
int tot2 = 0;
for (int i = v.Length; i < 0; i -= 2)
{
tot1 += Convert.ToInt16(v.Substring(i, 1));
}
tot1 *= 3;
for (int i = v.Length - 1; i < 0; i -= 2)
{
tot2 += Convert.ToInt16(v.Substring(i, 1));
}
tot1 += tot2;
int k = (tot1.ToString().Length);
int m = Convert.ToInt16(tot1.ToString().Substring(k, 1));
if (m == 0)
{
return 0;
}
return 10 - m;
}
}
}
在项目中引用的
如果可以的话,我可以掌握方法
LabelFields lv = new LabelFields();
string value = lv.BARCODE128HR(LL);
但是我真正需要做的是使用反射,以便我可以决定在运行时使用哪种方法计算值
我尝试过的是
Type type = typeof(LabelFields);
object obj = Activator.CreateInstance(type);
string res2 = (string)type.InvokeMember("BARCODE128HR", BindingFlags.InvokeMethod, null, obj, mParam);
这给了我
System.MissingMethodException
HResult=0x80131512
Message=Attempted to access a missing member.
要使反射有效,我缺少什么
答案 0 :(得分:0)
为什么首先需要反思?实例化LabelFields的obj类型后,可以直接调用其方法。
getElementById
编辑: 您的方法名称是一个来自外部的参数。我建议使用枚举和开关:
Type type = typeof(LabelFields);
LabelFields obj = (LabelFields)Activator.CreateInstance(type);
obj.BARCODE128HR(....);