Хорошо, так что после нескольких часов игры безрезультатно, я построил модель:
[AttributeUsage(AttributeTargets.All)]
public class PublicAttribute : System.Attribute
{
public enum Access { Public, Private }
public PublicAttribute(string Name, Access acs)
{
}
public PublicAttribute(string Name, Access acs, Action get, Action set)
{
}
}
Так что, если кто-то сделает что-то вроде этого:
[Public("PublicProperty", PublicAttribute.Access.Public)]
private string PrivateProperty = "hello";
или
[Public("PublicProperty", PublicAttribute.Access.Public, ()=>{return PrivateProperty;}, ()=>{PrivateProperty = value})]
private string PrivateProperty = "hello";
и затем, если кто-то пытается получить доступ к PrivateProperty, он может просто пойти:
ContainedClass.PublicProperty = // ect
"общественная собственность". и это из-за атрибута, и он будет использовать эти методы доступа get / set.
Что бы я хотел знать:
- Возможно ли это вообще?
- Есть ли что-то, что уже делает это?
- Если это возможно, (даже если есть что-то еще) Как мне это сделать?