我正在处理许多重复代码,它采用以下形式
usertags.Anger.FirstMainTag.SubTags.FirstSubTag = Top3SubAngerFirst[0].Sub_Tag;
usertags.Anger.FirstMainTag.SubTags.FirstSubTagScore = Top3SubAngerFirst[0].AngerEmotion;
usertags.Anger.FirstMainTag.SubTags.SecondSubTag = Top3SubAngerFirst[1].Sub_Tag;
usertags.Anger.FirstMainTag.SubTags.SecondSubTagScore = Top3SubAngerFirst[1].AngerEmotion;
usertags.Anger.FirstMainTag.SubTags.ThirdSubTag = Top3SubAngerFirst[2].Sub_Tag;
usertags.Anger.FirstMainTag.SubTags.ThirdSubTagScore = Top3SubAngerFirst[2].AngerEmotion;
我必须为usertags.Anger.
和usertags.Happy.
运行这些作业。我怎么做到这样我每次都不必写出来。
由于
答案 0 :(得分:1)
以下是您可以尝试的内容(您应该将对象更改为所需类型):
enum TagIndexEnum { First, Second, Third };
public static void SetSubTag(TagIndexEnum tagIndex, object[] array, object subTags)
{
switch (tagIndex)
{
case TagIndexEnum.First:
subTags.FirstSubTag = array[0].Sub_Tag;
subTags.FirstSubTagScore = array[0].AngerEmotion;
break;
case TagIndexEnum.Second:
subTags.SecondSubTag = array[1].Sub_Tag;
subTags.SecondSubTagScore = array[1].AngerEmotion;
break;
case TagIndexEnum.Third:
subTags.ThirdSubTag = array[2].Sub_Tag;
subTags.ThirdSubTagScore = array[2].AngerEmotion;
break;
default:
throw new InvalidOperationException();
}
}
// Using
var subTags = usertags.Anger.FirstMainTag.SubTags;
// usertags.Anger.FirstMainTag.SubTags.FirstSubTag = Top3SubAngerFirst[0].Sub_Tag;
// usertags.Anger.FirstMainTag.SubTags.FirstSubTagScore = Top3SubAngerFirst[0].AngerEmotion;
SetSubTag(TagIndexEnum.First, Top3SubAngerFirst, subTags);
// usertags.Anger.FirstMainTag.SubTags.SecondSubTag = Top3SubAngerFirst[1].Sub_Tag;
// usertags.Anger.FirstMainTag.SubTags.SecondSubTagScore = Top3SubAngerFirst[1].AngerEmotion;
SetSubTag(TagIndexEnum.Second, Top3SubAngerFirst, subTags);
// usertags.Anger.FirstMainTag.SubTags.ThirdSubTag = Top3SubAngerFirst[2].Sub_Tag;
// usertags.Anger.FirstMainTag.SubTags.ThirdSubTagScore = Top3SubAngerFirst[2].AngerEmotion;
SetSubTag(TagIndexEnum.Third, Top3SubAngerFirst, subTags);