本文整理汇总了C#中SimpleType.AddAnnotation方法的典型用法代码示例。如果您正苦于以下问题:C# SimpleType.AddAnnotation方法的具体用法?C# SimpleType.AddAnnotation怎么用?C# SimpleType.AddAnnotation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SimpleType
的用法示例。
在下文中一共展示了SimpleType.AddAnnotation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LazyGetItemsOfIList
public static IEnumerable<TreeNode> LazyGetItemsOfIList(Expression targetObject)
{
// This is needed for expanding IEnumerable<T>
var type = new SimpleType() { Identifier = typeof(IList).FullName };
type.AddAnnotation(typeof(IList));
targetObject = new CastExpression() { Expression = targetObject.Clone(), Type = type };
int count = 0;
GetValueException error = null;
try {
count = GetIListCount(targetObject);
} catch (GetValueException e) {
// Cannot yield a value in the body of a catch clause (CS1631)
error = e;
}
if (error != null) {
yield return new TreeNode(null, "(error)", error.Message, null, null);
} else if (count == 0) {
yield return new TreeNode(null, "(empty)", null, null, null);
} else {
for(int i = 0; i < count; i++) {
string imageName;
var image = ExpressionNode.GetImageForArrayIndexer(out imageName);
var expression = new ExpressionNode(image, "[" + i + "]", targetObject.AppendIndexer(i));
expression.ImageName = imageName;
yield return expression;
}
}
}
示例2: VisitMemberType
public override void VisitMemberType (MemberType memberType)
{
base.VisitMemberType (memberType);
AstNodeCollection<AstType> args = memberType.TypeArguments;
var mems = new Stack<MemberType> ();
var t = (AstType)memberType;
var mem = memberType;
while (mem != null) {
mems.Push (mem);
if (args.Count == 0)
args = mem.TypeArguments;
t = mem.Target;
mem = t as MemberType;
}
var newName = "";
var simp = t as SimpleType;
if (simp != null) {
if (args.Count == 0)
args = simp.TypeArguments;
newName += (simp.Identifier);
} else {
t.AcceptVisitor (this);
}
while (mems.Count > 0) {
var mm = mems.Pop ();
newName += ("_" + mm.MemberName);
}
var newType = new SimpleType (newName, args.Select (x => x.Clone ()));
var td = memberType.Annotation<TypeDefinition> ();
if (td != null) {
newType.AddAnnotation (td);
}
memberType.ReplaceWith (newType);
}