私のC#のスキルが低いですが、次のように失敗した理由を私は理解できません。次のようにC#のジェネリック医薬品とのインターフェイスとシンプルなOO
public interface IQuotable {}
public class Order : IQuotable {}
public class Proxy {
public void GetQuotes(IList<IQuotable> list) { ... }
}
は、その後のコードは次のとおりです。
List<Order> orders = new List<Orders>();
orders.Add(new Order());
orders.Add(new Order());
Proxy proxy = new Proxy();
proxy.GetQuotes(orders); // produces compile error
は、私は単に間違ったことをして見ていないのですか? OrderはQuotableを実装しているので、順序のリストはquoatablesのIListとして入ります。私はJavaのようなものを持っていて、うまく動作するので、私はC#の知識が不足していると確信しています。
ありがとうございました!私の考えは常にIListの具体的な実装です。オーダーは同じですが(もちろんIQuotablesはもっと多いかもしれません)、IQuotableを使ってIListを実装している限り、メソッドに何かを渡すことができますが、明らかにそうではないので、共分散を読まなければなりません。 net 2これは.NET 2だけをとるCLRストアドプロシージャなので、結局は2番目の例を使用しました。これは意味があり、必要なものを正確に実行しています。 – Daniil