2012-05-02 34 views
17

Lỗi tại địa chỉ:phương pháp mở rộng phải được xác định trong không chung lớp tĩnh

public partial class Form2 : Form 

Dự đoán nguyên nhân:

public static IChromosome To<T>(this string text) 
{ 
    return (IChromosome)Convert.ChangeType(text, typeof(T)); 
} 

Toan (không có từ khóa static):

public IChromosome To<T>(this string text) 
{ 
    return (IChromosome)Convert.ChangeType(text, typeof(T)); 
} 
+2

Ngay khi tôi nghĩ _that_ thực sự là một [thông báo lỗi tốt] (http://blogs.msdn.com/b/ericlippert/archive/2006/07/07/659259.aspx). –

Trả lời

20

Nếu bạn xóa "this" khỏi các tham số của bạn, nó sẽ hoạt động.

public static IChromosome To<T>(this string text) 

nên là:

public static IChromosome To<T>(string text) 
18

Lớp chứa phần mở rộng phải là tĩnh. Bạn đang ở:

public partial class Form2 : Form 

không phải là lớp tĩnh.

Bạn cần phải tạo một lớp học như vậy:

static class ExtensionHelpers 
{ 
    public static IChromosome To<T>(this string text) 
    { 
     return (IChromosome)Convert.ChangeType(text, typeof(T)); 
    } 
} 

Để chứa các phương pháp khuyến nông.

0

Vấn đề của tôi đã được gây ra bởi vì tôi đã tạo ra một phương pháp tĩnh bên trong partial class:

public partial class MainWindow : Window{ 

...... 

public static string TrimStart(this string target, string trimString) 
{ 
    string result = target; 

    while (result.StartsWith(trimString)){ 
    result = result.Substring(trimString.Length); 
    } 

    return result; 
    } 
} 

Khi tôi loại bỏ phương pháp này, các lỗi đi.

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