C# C接口与类访问

C# C接口与类访问,c#,interface,C#,Interface,当一个类实现一个接口时,是通过类本身还是通过它的接口访问属性和方法更好?接口将解耦该类,以便您以后可以对其进行测试。如果以后不需要测试它,或者不可能传入从同一接口继承的不同类,那么使用类方法是完全正常的。特别是在诸如System.Collections.Generic.List之类的基类中。您不希望每次要对其执行LINQ查询时都首先将其强制转换为IEnumerable。接口,它将解耦该类,以便您以后可以对其进行测试。如果以后不需要测试它,或者不可能传入从同一接口继承的不同类,那么使用类方法是完全

当一个类实现一个接口时,是通过类本身还是通过它的接口访问属性和方法更好?

接口将解耦该类,以便您以后可以对其进行测试。如果以后不需要测试它,或者不可能传入从同一接口继承的不同类,那么使用类方法是完全正常的。特别是在诸如System.Collections.Generic.List之类的基类中。您不希望每次要对其执行LINQ查询时都首先将其强制转换为IEnumerable。

接口,它将解耦该类,以便您以后可以对其进行测试。如果以后不需要测试它,或者不可能传入从同一接口继承的不同类,那么使用类方法是完全正常的。特别是在诸如System.Collections.Generic.List之类的基类中。您不希望每次想对它执行LINQ查询时都先将其强制转换为IEnumerable。

我认为这一切都取决于您对所处理对象的了解程度。 假定

如果我有Baz myBaz,那么在采取行动之前就没有必要把它交给ICommon

尽可能以最高的抽象级别工作。它使重构更容易,并且显著提高了代码的重用

Bar myBar = new Bar();
Baz myBaz = new Baz();

doSomething(myBar);
doSomething(myBaz);

public void doSomething(ICommon parameter)
{
    parameter.DoICommonThing(); // working on object reference of type ICommon.
}

换句话说,在方法签名中要求最通用的类型ie原型参数,允许调用者给出他们实际传递的参数。

我认为这一切都取决于你对所处理对象的了解程度。 假定

如果我有Baz myBaz,那么在采取行动之前就没有必要把它交给ICommon

尽可能以最高的抽象级别工作。它使重构更容易,并且显著提高了代码的重用

Bar myBar = new Bar();
Baz myBaz = new Baz();

doSomething(myBar);
doSomething(myBaz);

public void doSomething(ICommon parameter)
{
    parameter.DoICommonThing(); // working on object reference of type ICommon.
}
换句话说,在方法签名中要求最通用的类型ie原型参数,允许调用者给出他们实际传递的参数