C# C语言中的属性编程#
我是属性编程新手。不确定我问的问题是否正确 我有一个抽象基类(AbstractBase)和两个驱动类Derived1和Derived2。 我的AbstrartBase类有两种方法Method1和Method2 是否可以使用属性编程,以便在执行此操作时C# C语言中的属性编程#,c#,attributes,C#,Attributes,我是属性编程新手。不确定我问的问题是否正确 我有一个抽象基类(AbstractBase)和两个驱动类Derived1和Derived2。 我的AbstrartBase类有两种方法Method1和Method2 是否可以使用属性编程,以便在执行此操作时 AbstractBase ab= new Derived1(); 我只能访问Method1,当我使用Derived2类时,我只能访问Method2 这可能吗。如果是的话,那么你能给我一个开始的例子吗。我认为你把两个不同的固有性或多态性和属性概念联
AbstractBase ab= new Derived1();
我只能访问Method1
,当我使用Derived2
类时,我只能访问Method2
这可能吗。如果是的话,那么你能给我一个开始的例子吗。我认为你把两个不同的固有性或多态性和属性概念联系起来了。在您遇到问题的情况下,您可以做的是,您可以使一个接口具有一个方法,并在派生类中以不同的方式实现它,而不是使用多态性来调用所需的实现。比如说
public interface IBase
{
void Foo();
}
public class Derived1: IBase
{
public void Foo()
{
//Print Derived 1
}
}
public class Derived2: IBase
{
public void Foo()
{
//Print Derived 2
}
}
public class Program
{
public static void Main(String args[])
{
IBase base=new Derived1();
base.Foo();//This prints Derived 1
base=new Derived2();
base.Foo();//This prints Derived 2
}
}
其中,C#中的as属性用于将元数据附加到类或类成员,以及应用公共行为时,无需为共享行为的每个单元实现特定接口。它们是这样使用的
[MyAttribute]
public class MyClass
{
//Class body
}
您需要使用GetCustomAttribute()方法调用该属性,否则它将不起任何作用。有关属性的更多信息,请参阅本文
希望这能帮助你。什么是“属性编程”?不管怎样,“不”——不是那样的。这是因为
AbstractBase
定义了这两个方法(因此,所有派生类都继承这些方法)。如果您只想在特定的派生类中使用它,请在那里声明它。如果您只想让外部代码看不到基本方法,您可以使用足够的可见性修饰符-例如,受保护的
。在您的情况下,一个界面会更好,这样您就可以将希望可见的方法声明为公共,并复制隐藏的方法