2016-03-15 35 views
12

Tôi đang cố gắng để viết một phương pháp chung mà cung cấp các thông số và gọi một chức năng, như thế này:C# nhóm phương pháp suy luận kiểu

class MyClass { 
    public int Method(float arg) => 0; 
} 

TResult Call<T1, TResult>(Func<T1, TResult> func) => 
    func(default(T1)); 

void Main() 
{ 
    var m = new MyClass(); 
    var r1 = Call<float, int>(m.Method); 
    var r2 = Call(m.Method); // CS0411 
} 

Dòng cuối cùng thất bại trong việc biên dịch với CS0411. Có cách giải quyết nào để có suy luận kiểu để làm việc ở đây không?

Trường hợp sử dụng: sử dụng AutoFixture để tạo tham số cuộc gọi chức năng.

+0

Tôi không nghĩ điều này là có thể. – mrahhal

+0

Related (?): Http://stackoverflow.com/a/9331879/3225495 –

+0

Nó không liên quan, trong trường hợp của mình hai loại là độc lập và cả hai được đưa ra bởi phương pháp xử lý. C# có thể, về mặt lý thuyết, suy luận đầy đủ các đối số chung chính xác. Tiêu chuẩn chỉ không yêu cầu nó vì lý do phức tạp. – Blindy

Trả lời

6

Thật không may, đó là giới hạn của suy luận kiểu trong C#. Nó không thực sự làm được nhiều với kiểu trả về, đó là những gì cần thiết trong trường hợp của bạn để suy luận đầy đủ các đối số chung cho Call<>.

Các vấn đề liên quan