Yazılımımız, yansıma yoluyla dinamik olarak bulunması gereken birkaç sınıfa sahiptir. Sınıfların hepsinde, yansıma kodunun nesneleri başlattığı belirli bir imzası olan bir kurucu vardır.
Ancak, birisi yönteme başvurulup uyulmadığını kontrol ettiğinde (örneğin, Visual studio Code Lens aracılığıyla), yansıma yoluyla başvuru sayılmaz. İnsanlar referanslarını kaçırabilir ve görünüşte kullanılmayan yöntemleri kaldırabilir (veya değiştirebilir).
Yansıtma yoluyla çağrılması amaçlanan yöntemleri nasıl işaretlemeliyiz / belgelemeliyiz?
İdeal olarak, yöntem, hem meslektaşlar hem de Visual Studio / Roslyn ve diğer otomatik araçlar, yöntemin yansıma yoluyla çağrılmasını amaçladığı 'görecek' şekilde işaretlenmelidir.
Kullanabileceğimiz iki seçenek biliyorum ama ikisi de tatmin edici değil. Visual Studio başvuruları bulamadığından:
- Özel bir Öznitelik kullanın ve yapıcıyı bu öznitelikle işaretleyin.
- Sorun, öznitelik özelliklerinin bir yöntem başvurusu olamamasıdır, bu nedenle yapıcı yine de 0 başvurusu olduğunu gösterir.
- Özel özniteliğe aşina olmayan meslektaşlar muhtemelen görmezden gelecektir.
- Mevcut yaklaşımımın bir avantajı, yansıtma kısmının, çağırması gereken yapıcıyı bulmak için niteliği kullanabilmesidir.
- Bir yöntemin / kurucunun yansıma yoluyla çağrılması amaçlandığını belgelemek için yorumları kullanın.
- Otomatik araçlar yorumları yok sayar (ve iş arkadaşları da bunu yapabilir).
- Xml Belgeleri Yorumlar , Visual Studio'nun yöntem / yapıcıya ek bir başvuru sayması için kullanılabilir: Yapıcısı yansıma yoluyla çağıracak sınıf
olsunMyPlugin
. Çağıran yansıma kodununint
parametre alan kurucuları aradığını varsayalım . Aşağıdaki belgeler, kod merceğinin 1 referansa sahip kurucuyu göstermesini sağlar:
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
Hangi daha iyi seçenekler var?
Yansıma yoluyla çağrılması amaçlanan bir yöntemi / kurucuyu işaretlemek için en iyi uygulama hangisidir?