相关疑难解决方法(0)

什么是.NET Portable Subset(Legacy)?

Visual Studio 2012中的对象浏览器为Portable类库提供了两个不同的组件集:

  • .NET便携式子集
  • .NET便携式子集(旧版)

当我创建可移植类库时,它使用.NET Portable Subset.什么是第二套,我该如何使用它?它包含在.NET Portable Subset中不可用的 MEF .

.net mef portable-class-library visual-studio-2012

15
推荐指数
1
解决办法
3225
查看次数

.NET生成泛型方法 - 紧凑框架

以下是我正在寻找生成泛型委托的方法的原始问题: .Net生成泛型方法

以下是在.NET 3.5中生成通用委托的代码:

public delegate void PropertyChangedDelegate<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue);

EventInfo eventInfo = type.GetEvent(property.Name + "Changed");
MethodInfo propertyChangedMethodInfo = this.GetType().GetMethod("content_PropertyChanged", BindingFlags.NonPublic | BindingFlags.Instance);
MethodInfo genericPropertyChangedMethodInfo = propertyChangedMethodInfo.MakeGenericMethod(eventInfo.EventHandlerType.GetGenericArguments());
Delegate delegate_ = Delegate.CreateDelegate(eventInfo.EventHandlerType, genericPropertyChangedMethodInfo);
eventInfo.AddEventHandler(obj, delegate_);

void content_PropertyChanged<OwnerType, PropertyType>(OwnerType sender, String propertyName, PropertyType oldValue, PropertyType newValue)
{
}
Run Code Online (Sandbox Code Playgroud)

这适用于.NET 3.5,但现在当我尝试移植到紧凑框架3.5时,Delegate.CreateDelegate方法需要第三个参数...参数说明说:

它应该是第一个参数,或者"委托绑定的对象".

我尝试将'obj'放在那里,'this'和null,我总是得到一个无效的参数异常.

有任何想法吗?

.net c# generics

9
推荐指数
1
解决办法
775
查看次数

可移植类库反射GetField

我目前正在尝试将Xamarin.iOS应用程序库转换为PCL.我有这个不能编译的代码:

    private void SetPrivateField<T>(object item, string fieldName, object value) {
        typeof(T).GetField(fieldName, BindingFlags.Instance | BindingFlags.NonPublic)
            .SetValue(item, value);
    }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在尝试为类型设置私有字段.还有另外一种方法吗?

编辑 这编译.它会做同样的事情吗?

 private void SetPrivateField<T>(object item, string fieldName, object value) {
      typeof(T).GetRuntimeField(fieldName).SetValue(item,value);
 }
Run Code Online (Sandbox Code Playgroud)

.net c# xamarin.ios portable-class-library

7
推荐指数
1
解决办法
1863
查看次数