Type.GetType(string.contains(','))

例如

 Type type = Type.GetType("ACalCoreServiceLib.BaseService,ACalCoreServiceLib");

里面的ACalCoreServiceLib.BaseService,ACalCoreServiceLib是完全限定名,逗号后面的命名空间可写可不写

 

引用:http://www.cnblogs.com/olartan/archive/2011/11/30/2268809.html

关于typeName的说明如下:

1)字符串的首尾不允许有空格,逗号前不允许有空格(笔者在项目中应该在逗号前多余了一个空格导致抛出无法找到类型的异常)

2)完全限定名可以包含逗号后面的namespace,当然也可不包含

 

关于跨进程的反射同样有两点要注意:

1)typeof是支持强类型的,如:var t = typeof(FF.Persistence.Driver.SQLite) 前提是项目必须引用FF.Persistence程序集

2)使用Type.GetType来进行反射,要明白Type.GetType是非强类型,如果参数typeName表示的目标类型不在当前程序集中,那么会返回null。解决办法是:

 

var asmb = Assembly.LoadFrom("FF.Persistence.dll") ;
var supType = asmb.GetType("FF.Persistence.Driver.SQLite") ;

以上都是些小细节,如果留心会少走很多弯路。

转载于:https://www.cnblogs.com/swobble/p/7760001.html

public Dictionary<string, List<BasicEntity>> ValidateProcess(string excelFile) { var readExcelResp = _excelReader.ReadExcel(excelFile); foreach (var keyValuePair in readExcelResp) { foreach (var basicEntity in keyValuePair.Value) { var validationResult = ExecuteValidate(basicEntity); if (!validationResult.IsValid) { basicEntity.MigrationStatus = MigrationStatus.PreValidationFailed; foreach (var validationResultError in validationResult.Errors) { excelErrorLogService.AddErrorLog(basicEntity.MigrationRowNum.ToString(), validationResultError.ErrorMessage, keyValuePair.Key); } } } if (keyValuePair.Value.Any()) { var verifyDuplicate = VerifyDuplicate(keyValuePair.Value,keyValuePair.Key); if (verifyDuplicate.Any()) { var type = typeof(IValidator<>).MakeGenericType(keyValuePair.Value[0].GetType()); var validator = provider.GetService(type) ; if (validator != null) { var methodInfo = validator.GetType().GetMethod("DuplicateHandler", new[] {verifyDuplicate.GetType() }); methodInfo?.Invoke(validator, new object?[] { verifyDuplicate }); } } } } return readExcelResp; } public List<BasicEntity> VerifyDuplicate(List<BasicEntity> checkList, String sheetName) { var verifySet = new HashSet<string>(); var sameList = new List<BasicEntity>(); var identity = checkList[0].GetIdentity(); if (!string.IsNullOrEmpty(identity)) { var fields = identity.Split(""); foreach (var basicEntity in checkList) { List<string> fieldsValue = new(); foreach (var field in fields) { fieldsValue.Add(basicEntity.GetType() .GetProperty(field, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance).GetValue(basicEntity) ?.ToString()); } var values = string.Join("", fieldsValue); if (verifySet.Contains(values)) { basicEntity.MigrationStatus = MigrationStatus.PreValidationFailed; sameList.Add(basicEntity); _excelErrorLogService.AddErrorLog(basicEntity.MigrationRowNum.ToString(), $"Fields {identity} values repetition", sheetName); } else { verifySet.Add(values); } } } return sameList; } 优化这段代码
最新发布
06-15
优化这段代码增加代码的可阅读性和简洁性并给出示例 for (TaskRuleDetail primaryDatum : primaryData) { String taskCode = primaryDatum.getTaskCode(); String date = primaryDatum.getDataField(); String rate = primaryDatum.getDataValue(); if (CommonBusinessEnum.RuleDetailDataFieldEnum.USER_IDENTITY.getValue().equals(date)) { if (!user.toString().contains(rate)) { user.append(rate).append(","); } continue; } if (CommonBusinessEnum.RuleDetailDataFieldEnum.APP_CODE.getValue().equals(date)) { if (!app.toString().contains(rate)) { app.append(rate).append(","); } continue; } //若临时map中不包含这一客户名称和编号,则创建新的valueMap来存放结果对象 if (!lamp.containsKey(taskCode)) { valueMap = new HashMap<>(); valueMap.put("taskCode", taskCode); valueMap.put(date, rate); //根据任务id 来查询奖励规则表 //查询奖励相关参数 String type = task.getType(); List<TaskAward> taskAward = taskAwardService.selectTaskAwardByCode(primaryDatum.getTaskCode(), taskGroupCode); if(!CollectionUtils.isEmpty(taskAward)){ if(type.equals(CommonBusinessEnum.TaskTypeEnum.YDWZ.getValue())){ List<AwardDetails> objects = taskAward.stream() .map(award -> { AwardDetails awardDetails = new AwardDetails(); awardDetails.setAwardName(award.getName()); awardDetails.setAwardInfo(award.getInfo()); awardDetails.setAwardType(award.getAwardType()); return awardDetails; }) .collect(Collectors.toList()); valueMap.put("awardDetail", objects); }else { StringBuilder sbName = new StringBuilder(); StringBuilder sbInfo = new StringBuilder(); for (TaskAward award : taskAward) { sbName.append(award.getName()).append(","); sbInfo.append(award.getInfo()).append(","); } String awardName = sbName.deleteCharAt(sbName.length() - 1).toString(); String awardInfo = sbInfo.deleteCharAt(sbInfo.length() - 1).toString(); valueMap.put("awardType", taskAward.get(0).getAwardType()); valueMap.put("awardName", awardName); valueMap.put("awardInfo", awardInfo); } } //将新建的map对象放入临时对象中,用于下一次的判断 lamp.put(taskCode, valueMap); result.add(valueMap); } else { //若临时map中包含这一客户名称和编号,则在已有的基础上将日期与准交率添加进去 valueMap = lamp.get(taskCode); valueMap.put(date, rate); } }
02-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值