。LISP的vlax-method-applicable-p?
愚蠢的问题后,太久了。不可否认的是,我的第二份(好吧,第三份)孟买蓝宝石+汤尼,用苦艾酒腌制的马扎塔橄榄...嗯....什么是/有什么-一个。NET相当于LISP的vlax-method-applicable-p?基本上,我希望迭代选择集,并且仅对于所需方法适用的对象,我希望调用所述方法。干杯
**** Hidden Message ***** 类型。获取成员..?..
是一种..?..如果您知道该方法适用的基类。 也许像using System;。
使用 System.Collections.Generic;。
使用系统反射;。
使用Autodesk.AutoCAD.DatabaseServices;。
使用Autodesk.AutoCAD.Runtime;。
。
。
namespace VlaxMethodApplicableP。
{。
公共类命令。
{。
static HashSet Tset = new HashSet();。
。
static bool HasMethod(DBObject type, string name)。
{。
类型 t = 类型,GetType();。
if (Tset.Contains(t))。
返回 true;。
foreach (MethodInfo info in t.GetMethods())。
{。
如果 (信息.名称 == 名称)。
{。
Tset.Add(t);。
返回 true;。
}。
}。
返回 false;。
}。
。
。
public static void AndDoIt()。
{。
ObjectIdCollection ids = new ObjectIdCollection();。
Database db = HostApplicationServices.WorkingDatabase;。
using (DBObject sp = db.CurrentSpaceId.Open(OpenMode.ForRead))。
{。
foreach (ObjectId id in sp as BlockTableRecord)。
{。
using (DBObject obj = id.Open(OpenMode.ForRead))。
{。
if (HasMethod(obj, “get_StartPoint”))。
ids.Add(id);。
}。
}。
}。
}。
}。
}。
添加类型缓存。
商标:
我去过一次DoIt45,但后来我完全忘记了DoIt27做了什么。
页:
[1]