Belirli bir öznitelikle işaretlenmiş bir yöntemle çağrılan herhangi bir yöntemde nesne ayırma gerçekleştirilirse başarısız olacak bir kural yazmak istiyorum.Bir yöntemin yeni bir deyim içeren ve başka bir deyimde bir yöntem çağırıp çağıracağını belirleme
Şu ana kadar, bu ana yöntemlerden herhangi birinin özniteliği olup olmadığını görmek için yöntemimi çağıran tüm yöntemleri yineleyerek, CallGraph.CallersFor()
kullanarak denetleme yöntemini tamamladım.
Bu, ana makine yöntemlerini denetlenecek yöntemle aynı derlemede denetlemek için çalışır, ancak çevrimiçi olarak okunduğunda, bir kerede CallGraph.CallersFor()
tüm derlemelere bakmış görünüyor, ancak şimdi değil.
Soru: Farklı bir gruptakiler de dahil olmak üzere belirli bir yöntemi çağıran yöntemlerin bir listesini almanın bir yolu var mı?
Alternatif Yanıt: Yukarıdakiler mümkün değilse, farklı bir derlemede olanlar da dahil olmak üzere belirli bir yöntem tarafından çağrılan her yönteme nasıl bağlanırım?
Örnek:
-----In Assembly A
public class ClassA
{
public MethodA()
{
MethodB();
}
public MethodB()
{
object o = new object(); // Allocation i want to break the rule
// Currently my rule walks up the call tree,
// checking for a calling method with the NoAllocationsAllowed attribute.
// Problem is, because of the different assemblies,
// it can't go from ClassA.MethodA to ClassB.MethodB.
}
}
----In Assembly B
public var ClassAInstance = new ClassA();
public class ClassB
{
[NoAllocationsAllowed] // Attribute that kicks off the rule-checking.
public MethodA()
{
MethodB();
}
public MethodB()
{
ClassAInstance.MethodA();
}
}
kural hatası yeterlidir alma bu aşamada, hata bildirir nerede gerçekten umursamıyorum.
ben gerçekten doğrulamak için çalışıyoruz anlamak emin değilim. kod somut bir örnek verebilir misiniz olduğunu should kural ihlali oluşturulsun? –
@Nicole: Ed ited. –