BlackBox 发表于 2016-1-31 23:28:03

。LISP的vlax-method-applicable-p?

愚蠢的问题后,太久了。不可否认的是,我的第二份(好吧,第三份)孟买蓝宝石+汤尼,用苦艾酒腌制的马扎塔橄榄...嗯....什么是/有什么-一个。NET相当于LISP的vlax-method-applicable-p?
基本上,我希望迭代选择集,并且仅对于所需方法适用的对象,我希望调用所述方法。干杯
**** Hidden Message *****

kdub 发表于 2016-2-1 00:28:24

类型。获取成员..?..
是一种..?..如果您知道该方法适用的基类。

BlackBox 发表于 2016-2-1 04:27:04

也许像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);。
}。
}。
}。
}。
}。
}。
添加类型缓存。

kdub 发表于 2016-2-1 05:12:14


商标:

kdub 发表于 2016-2-1 05:22:04

我去过一次DoIt45,但后来我完全忘记了DoIt27做了什么。
页: [1]
查看完整版本: 。LISP的vlax-method-applicable-p?