相关疑难解决方法(0)

具有多个约束的通用方法

我有一个泛型方法,它有两个通用参数.我试图编译下面的代码,但它不起作用.它是.NET限制吗?是否可以为不同的参数设置多个约束?

public TResponse Call<TResponse, TRequest>(TRequest request)
  where TRequest : MyClass, TResponse : MyOtherClass
Run Code Online (Sandbox Code Playgroud)

c# generics .net-3.5

235
推荐指数
4
解决办法
8万
查看次数

当我想要完全按照我没有添加ISerializable时的操作时,如何在具有[Serializable]的类上实现ISerializable?

我有一个类,我正在序列化一些数据:

[Serializable]
public class SomeData {
    public int NumericField;
    public string StringField;
}
Run Code Online (Sandbox Code Playgroud)

我有一个很好的方便的扩展方法:

public static string ToJson<T> (this T value) {
    // yay no compile-time checks for [Serializable]?
    if (!typeof(T).IsSerializable)
        throw new SerializationException("Object lacks [Serializable] attribute");

    var serializer = new DataContractJsonSerializer(typeof(T));

    using (var stream = new MemoryStream()) {
        using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, Encoding.UTF8)) {
            serializer.WriteObject(writer, value);
        }

        return Encoding.UTF8.GetString(stream.ToArray());
    }
}
Run Code Online (Sandbox Code Playgroud)

我真的很喜欢我的课程SomeData实现ISerializable,但是当我添加它时,我被告知我需要添加一个方法:

error CS0535: 'SomeData' does not implement interface member
System.Runtime.Serialization.ISerializable.GetObjectData(
System.Runtime.Serialization.SerializationInfo, 
System.Runtime.Serialization.StreamingContext)'
Run Code Online (Sandbox Code Playgroud)

问题只是我希望它 …

c# generics reflection serialization

3
推荐指数
1
解决办法
5521
查看次数

方法参数接受多种类型

我正在开发一个应用程序,我在RichTextBox其中定制了多种类型的应用程序(RichTextBox,RichAlexBox,TransparentRichTextBox).

我想创建一个方法来接受所有这些类型加上一些其他参数.

private void ChangeFontStyle(RichTextBox,RichAlexBox,TransparentRichTextBox rch,
                                                         FontStyle style, bool add)
{
  //Doing somthing with rch.Rtf
}
Run Code Online (Sandbox Code Playgroud)

我已经通过计算器搜查,发现了一些答案这样,我无法弄清楚如何使用它们来解决我的问题

void foo<TOne, TTwo>()  //There's just one parameter here
   where TOne : BaseOne //and I can't figure out how to define my other two parameters        
   where TTwo : BaseTwo
Run Code Online (Sandbox Code Playgroud)

我也试过重载,因为这个答案提供,

private void ChangeFontStyle(TransparentRichTextBox rch, FontStyle style, bool add);
private void ChangeFontStyle(RichAlexBox rch, FontStyle style, bool add);
private void ChangeFontStyle(RichTextBox rch,FontStyle style, bool add)
  {
    //Some codes …
Run Code Online (Sandbox Code Playgroud)

c# generics winforms

2
推荐指数
2
解决办法
7208
查看次数

在c#中创建只适用于特定类型的泛型函数

我正在尝试创建一个处理我的两个模型之一的通用函数.请注意,这两个模型都具有相同的确切属性...

例如,在下面的代码中,即使"NewProduct"和"OldProduct"都具有此属性,智能感知也不知道在T中存在名为Price的属性.如何向VS指定我希望能够传入的两种类型?IList<NewProduct>, IList<OldProduct>

public static IList<T> GenericFunction<T>(IList<T> objList)
{
    IList<T> filteredData = objList.Where(p => p.Price > 0));
}
Run Code Online (Sandbox Code Playgroud)

c# generics generic-collections

2
推荐指数
1
解决办法
173
查看次数