2011-06-21 20 views
0

私は親子関係(Identifier/IdentifierValue)と同じように見えるスナップショットクラス(IdentifierSnapshot/IdentifierValueSnapshot)で構成されるビジネスモデルを持っています。一般的なパラメータの問題

IdentifierまたはIdentifierSnapshotの列挙型で機能する拡張メソッドを作成しようとしていますが、私はXXXプレースホルダを挿入した拡張メソッドに何を配置するのか分かりません。

//Interfaces 
public interface IIdentifier<TIdentifierValue> 
    where TIdentifierValue : IIdentifierValue 
{ 
    string Code { get; } 
    IEnumerable<TIdentifierValue> GetValues(); 
} 

public interface IIdentifierValue 
{ 
    string Code { get; } 
    string Value { get; } 
} 

//Main classes 
public class Identifier : IIdentifier<IdentifierValue> 
{ 
    public string Code { get; set; } 
    public IEnumerable<IdentifierValue> GetValues(); 
} 

public class IdentifierValue : IIdentifierValue 
{ 
    public string Code { get; set; } 
    public string Value { get; set; } 
} 

//Snapshots 
public class IdentifierSnapshot : IIdentifier<IdentifierValueSnapshot> 
{ 
    public string Code { get; set; } 
    public IEnumerable<IdentifierValueSnapshot> GetValues(); 
} 

public class IdentifierValueSnapshot : IIdentifierValue 
{ 
    public string Code { get; set; } 
    public string Value { get; set; } 
} 

public static IdentifierExtensions 
{ 
    public static IEnumerable<XXX> ByCode<XXX>(this IEnumerable<XXX> instance, string code) 
    { 
    return instance.Where(x => string.Compare(code, x.Code, true) == 0); 
    } 
} 

答えて

1

私は、これはそれを行うだろうと思う:

public static IEnumerable<T> ByCode<T,Z>(this IEnumerable<T> instance, string code) 
    where T:IIdentifier<Z> 
    where Z:IIdentifierValue 
関連する問題