Я хотел бы знать, возможно ли инкапсулировать атрибут ac #.
Я лучше объясню, в чем заключается моя цель:
Я установил пакет из nuget в библиотеку классов ...В этом пакете у меня есть некоторые атрибуты, которые я должен использовать в разных модулях моего проекта ... Я не хочу устанавливать пакет везде, поэтому я хочу создать свой собственный атрибут, который скрывает атрибут от пакета nuget.
Единственная идея, которая у меня есть, - создать собственный атрибут, который наследуется от nuget attibute, но это не имеет смысла.Таким образом, я не encapsulantig, и я должен везде устанавливать пакет nuget.
Я пытаюсь сделать пример:
MyLibrary.csprj <-- Here I install nuget package
|
|--> MyCustomClassAttribute.cs
|--> MyCustomParamAttribute.cs
MyCustomClassAttribute
и MyCustomParamAttribute
- мои пользовательские атрибуты, которые должныскрыть атрибуты пакета nuget.Один из атрибутов пакета nuget выглядит примерно так:
public class NugetPackageAttribute : Attribute
{
public NugetPackageAttribute(string inputParameter)
{
}
}
Мне не нужно передавать входной параметр в мой настраиваемый атрибут, потому что он является дорогостоящим для меня.
Тогда я должениспользуйте мои пользовательские атрибуты в других модулях моего проекта:
MyProjectModule1.csprj
|
-->MyProjectClass1.cs
MyCustomClass.cs
примерно так:
[MyCustomClass]
public class MyProjectClass1
{
public void DoWork([MyCustomParam]object param)
{ ... }
}
Итак, существует ли способ инкапсуляции атрибута?
Спасибо
РЕДАКТИРОВАТЬ
Я пытаюсь найти общее решение проблемы.У меня есть решение с N проектов.
Solution
└-> Project 1
└-> Project 2
└-> Project 3
...
└-> Project N
Я должен установить пакет Nuget, который содержит некоторые атрибуты.Я должен использовать эти атрибуты в разных точках решения.Это означает, что я должен установить пакет nuget в другой проект моего решения, например:
Solution
└-> Project 1 //<-- Nuget Package X here
| └-> [NuGetAttr]public void Class1{}
|
└-> Project 2 //<-- Nuget Package X here
| └-> [NuGetAttr]public void Class2{}
|
└-> Project 3
|
...
└-> Project N //<-- Nuget Package X here
└-> [NuGetAttr]public void ClassN{}
Я хочу избегать повсеместной установки пакета nuget.Поэтому я хочу сделать что-то вроде этого:
Solution
└-> Project 1 //<-- Reference to my Project N+1
| └-> [MyCustomAttr]public void Class1{}
|
└-> Project 2 //<-- Reference to my Project N+1
| └-> [MyCustomAttr]public void Class2{}
|
└-> Project 3
|
...
└-> Project N //<-- Reference to my Project N+1
| └-> [MyCustomAttr]public void ClassN{}
|
└-> Project N+1 //<-- Nuget Package X here and stop
└-> public void MyCustomAttr : Attribute {} //<-- Here inside use the NuGetAttr, or I dont know what...